Pathfinder проблема с вложенными MVCGrid & MVCForm и решение - PullRequest
0 голосов
/ 24 января 2012

Я использую такую ​​структуру для поддержки перехода от таблиц верхнего уровня к таблицам нижнего уровня.В общем, идея состоит в том, чтобы либо отредактировать запись в текущем представлении, либо перечислить дочерние записи для этого же представления с помощью столбцов расширителя.

Конструктивно это Клиент -> Продукты клиента -> Информация о продукте -> Деятельность продукта.

  Customer     MVCgrid                               ok
    edit           MVCform (via expander column)     ok
    view products  MVCgrid (via expander column)     ok
        edit a product        MVCform                pathfinder error
        view products details MVCGrid                pathfinder error
              edit product details     MVCform
              view product activity    MVCGrid

Эта структура работает на внешнем уровне.Я могу редактировать запись клиента или просматривать продукты клиента, как ожидалось.Когда я нажимаю «изменить продукт» (MVCform) или «просмотреть сведения о продукте» (MVCgrid), я получаю сообщение об ошибке:

PathFinder_Exception

Невозможно включить cvCustProducts \ cvuidcontrol \ cvuiddetails.php

"cvuiddetails" - это имя функции, объявленное как "function page_cvuiddetails ()"

Я проверил и перепроверил все, что мог подумать.Мне кажется, что имя функции недоступно и вызывается pathfinder, чтобы выяснить, где находится страница «cvuiddetails» и она пуста.

Буду благодарен за любые предложения.

===== [РЕШЕНИЕ] ============================================

Десять минут спустя .........

Ага !!!!

Вот решение проблемы, которую я только что опубликовалНесколько минут назад, и я надеюсь, что все остальные сочтут это полезным:

При вложении функций перед именем функции ставится префикс с именем вызывающей функции

function page_cvuidcontrol () содержитстолбец расширения, который вызывает "cvuiddetails".

ИМЯ ОРИГИНАЛЬНОЙ ФУНКЦИИ: функция page_cvuiddetails ()

ИМЯ ФУНКЦИИ НОВОГО: function page_cvuidcontrol_cvuiddetails ()

1 Ответ

0 голосов
/ 25 января 2012

Если у вас есть файл page/cvuidcontrol.php, вы можете определить функцию page_cvuiddetails () в этом файле. Это называется подстраницей.

Однако, будьте осторожны и убедитесь, что вы не называете функцию так же, как имя класса. Это очень неудачное совпадение, которое несколько раз доставляло мне проблемы.

class page_details {
    function page_details(){
    }
}

Это не сработает, потому что PHP считает эту функцию конструктором.

...