При использовании метода findAll на найденных страницах Zend_Navigation_Container удаляются из объекта контейнера.
То же самое происходит, даже когда я клонирую контейнерный объект и вызывается findAll для этого клонированного.
Я не могу понять, как это происходит.
Однако я заметил, что это происходит только тогда, когда я пытаюсь «найти» страницы на втором уровне (или глубже)
Похоже, здесь описана та же проблема, ответа не было ...
Вот код для воспроизведения проблемы:
1. Первый метод, без клонирования, любая «найденная» страница удаляется из контейнера
<?php
$container = new Zend_Navigation(array(
array(
'label' => 'Page 1',
'route' => 'default',
'pages' => array(
array(
'label' => 'Page 1.1',
'route' => 'default',
),
)
),
array(
'label' => 'Page 2',
'route' => 'default',
),
array(
'label' => 'Page 3',
'route' => 'default',
)
));
echo $this->navigation($container)->menu()->renderMenu($container);
echo '<br /><hr /><br />';
echo $this->navigation($container)->menu()->renderMenu(new Zend_Navigation($container->findAllByLabel('Page 2')));
echo '<br /><hr /><br />';
echo $this->navigation($container)->menu()->renderMenu($container);
?>
2. Вторая попытка, клонирование, страница второго уровня (и более глубокая), которая "найдена", удалена из контейнера
<?php
$container = new Zend_Navigation(array(
array(
'label' => 'Page 1',
'route' => 'default',
'pages' => array(
array(
'label' => 'Page 1.1',
'route' => 'default',
),
)
),
array(
'label' => 'Page 2',
'route' => 'default',
),
array(
'label' => 'Page 3',
'route' => 'default',
)
));
$container1 = clone $container;
$container2 = clone $container;
$container3 = clone $container;
echo $this->navigation($container1)->menu()->renderMenu($container1);
echo '<br /><hr /><br />';
echo $this->navigation($container2)->menu()->renderMenu(new Zend_Navigation($container2->findAllByLabel('Page 1.1')));
echo '<br /><hr /><br />';
echo $this->navigation($container3)->menu()->renderMenu($container3);
?>
3. Последнее, клонирование, страница на первом уровне (и глубже), которая «найдена», НЕ удаляется из контейнера
Тот же код, что и выше, только «Страница 2» вместо «Страница 1.1»
Может кто-нибудь сказать мне, что здесь происходит?
Все, чего я хочу добиться, это отображать одно и то же меню в двух разных местах. В обоих местах меню построено из части страниц контейнера, отфильтровано методом findXXX ...
Но с описанной проблемой это кажется невозможным: (
Заранее спасибо за любые предложения.