Zend Framework и вложенные наборы

в настоящее время мы разрабатываем собственный Feedmanager для ShopProducts на основе Zend Framework. В этом менеджере каналов вы можете управлять несколькими каналами, которые будут созданы и отправлены в разные места. Каждый фид имеет n-полей, которые в текущей версии есть только на одном уровне. Теперь мы хотим изменить его на многоуровневую версию, у нас есть родительские поля и дочерние поля.

Мы не хотим изобретать велосипед, поэтому мы хотели бы использовать развитый класс или помощник.

Я нашел класс Ф. Пьетки. https://github.com/fpietka/Zend-Nested-Set я пытался использовать этот помощник в нашей системе, но безуспешно.

Я написал следующую строку, чтобы использовать класс:

$oNested = new NestedSet_Model();

Я получил следующее сообщение об ошибке:

Неустранимая ошибка: вызов неопределенного метода NestedSet_Model::getDbTable() в D:\xampp\htdocs\feedmanager_alpha\application\classes\NestedSet.class.php в строке 75

В readme помощника Peitka's NestedSet говорится, что ZendLibrary должна быть в пути включения.

Я думаю, что сделал это со следующими строками:

define("ROOTPATH", realpath("../"));
define("LIBPATH", ROOTPATH . DIRECTORY_SEPARATOR . 'library' . DIRECTORY_SEPARATOR);

// Ensure library/ is on include_path
set_include_path(
    implode(PATH_SEPARATOR,
        array(
            realpath(LIBPATH)
        )
    )
);

Правильно ли я установил путь включения? В чем может быть проблема в моем случае? Является ли вложенный набор лучшим способом создания родительско-дочерней модели?


person Max Schindler    schedule 29.11.2011    source источник
comment
Это не похоже на то, что что-то не так с путем включения. Ошибка гласит, что класс NestedSet_Model не имеет функции/метода с именем getDbTable(). Он может найти класс в порядке, это вызов метода, который вызывает ошибки. Вы уверены, что у этого класса есть этот метод?   -  person Jake N    schedule 30.11.2011
comment
Эй jakenoble, во-первых: спасибо за ваш комментарий. В классе NestedSet_Model нет этого метода. Я думал, что этот класс завершен? Как никто другой не мог распознать эту недостающую функцию?   -  person Max Schindler    schedule 30.11.2011


Ответы (2)


Я настоятельно рекомендую вам не использовать этот класс, потому что это явно WIP. Однако, если вы хотите обойти эту ошибку, вы можете просто удалить метод __construct() и вызвать setDb() и setTableName() вручную.

Пример:

$model = new NestedSet_Model();
$model->setDb(Zend_Db_Table::getDefaultAdapter());
$model->setTableName('table_name');
person Pieter    schedule 06.01.2012
comment
Можете ли вы порекомендовать другой (лучший) класс для обработки вложенных наборов в zend framework? - person turist_ua; 16.01.2012

Давно пора было, но я обновил https://github.com/fpietka/Zend-Nested-Set (даже с модульными тестами).

Не стесняйтесь создавать проблемы!

person fpietka    schedule 29.08.2014