Ответ 1
Я использую
$this->partialLoop('template.phtml', array(
'data' => $iterable,
'otherVariable' => $otherVariable
);
Предупреждение и изменение:
Чтобы быть полностью честным, я допустил ошибку. Я предполагаю, что код, который я предложил, не будет работать. Я ошибаюсь для частичного() помощника. Это не будет работать из-за этой части класса-помощника:
foreach ($model as $item) {
// increment the counter variable
$this->partialCounter++;
$content .= $this->partial($name, $module, $item);
}
Он будет перебирать по всему массиву вместо ключа данных. Я не понимаю, как можно принять ответ: D Спасибо Nikolaus Dulgeridis за то, что указали это.
Вы даже не можете отправлять какие-либо дополнительные данные через $this- > view, потому что частичная часть состоит в том, что он создает "чистый" экземпляр представления, так что назначенные переменные не будут сталкиваться с вашими существующими переменными.
Возможные варианты
- Расширение помощника вида с помощью методов для установки настраиваемых переменных
- Итерировать массив и переформатировать его на
array(
array('data' => $item1, 'id' => 1, 'totalCount' => 10) ,
array('data' => $item2, 'id' => 2, 'totalCount' => 10) ,
array('data' => $item3, 'id' => 3, 'totalCount' => 10) ,
)
- Используйте Registry для хранения значений.
Zend_Registry::set('partialLoopCount', $count);
$this->partialLoop($viewScript, $data);
- Сбросить partialLoop и использовать partial() вместо
Я предпочитаю это решение.
$count = count($data);
foreach ($data as $key => $value) {
echo $this->partial($viewScript, array('item' => $value, 'position' => $key, 'count' => $count));
}