В настоящее время я нахожу, что должен продолжать копировать partials для различных модулей.
Я хотел бы иметь каталог случая для всего partials, к которому получат доступ.
У кого-либо есть хороший способ сделать это?
Спасибо
$this->partial('directoryOfPartials/partial.phtml', $model);
Я думаю, вы также можете использовать $ this-> partial с тремя аргументами. Второй аргумент - это имя модуля, а третий аргумент становится моделью.
Взято из: http://framework.zend.com/manual/en/zend.view.helpers.html
Пример № 10 Отрисовка частичных файлов в Другое Модули Иногда часть будет существовать в другом модуле. Если вы знаете имя модуля, вы можете передать его в качестве второго аргумента функции либо partial (), либо partialLoop (), перемещая $ аргумент модели для третьей позиции . Например, если есть часть пейджера , которую вы хотите использовать, это в модуле 'list', вы можете получить его следующим образом:
Php echo $ this-> partial ('pager.phtml', 'list', $ pagerData)?>
Таким образом, вы можете повторно использовать частичные данные , созданные специально для других {{1 }} модули. Тем не менее, вероятно, лучше помещать повторно используемые частичные файлы в пути к сценариям общего представления.
РЕДАКТИРОВАТЬ - Доступ к частичному представлению из области действия контроллера
$this->view->getHelper('partial')->partial('comments.phtml');
Отличное спасибо :)
Однако, как мне сделать это через контроллер? У меня есть fancybox и я настроил ajax layout:
$this->view->layout()->setLayout('ajax');
$errors = array('You have lost your rights to download this clip, you have downloaded it the maximum amount of times.');
$this->render($this->view->partial('partials/errors.phtml', 'default', array('errors' => $errors)), NULL, true);
Всплывающее окно как нужно, но со следующей ошибкой:
Problem: Method "partial" does not exist and was not trapped in __call()
Я вроде как предполагал, что $this->view->partial будет таким же, как использование $this->partial внутри шаблона представления, но, похоже, нет. Идеи?
Решено с помощью:
Bootstrap initView, добавлено:
$view->addScriptPath('../application/layouts/partials');
Переместил мои partials в эту директорию. Затем в моем контроллере я делаю:
$this->view->layout()->setLayout('ajax');
$this->view->form = $form;
$this->renderScript('login.phtml');
Thanks goes out to #zftalks SmartSsa