Модульный Zend Framework с базой партиалов - PullRequest
7 голосов
/ 30 марта 2010

В настоящее время я обнаружил, что мне нужно дублировать партиалы для разных модулей.

Я хотел бы иметь каталог дел для доступа ко всем частям.

У кого-нибудь есть хороший способ сделать это?

Спасибо

Ответы [ 2 ]

8 голосов
/ 30 марта 2010
$this->partial('directoryOfPartials/partial.phtml', $model);

Я думаю, вы также можете использовать $ this-> part с тремя аргументами. Второй аргумент - это имя модуля, а третий аргумент становится моделью.

взято из: http://framework.zend.com/manual/en/zend.view.helpers.html

Пример # 10 Рендеринг Частиц в Другие Модули Иногда частичная воля существуют в другом модуле. если ты узнать название модуля можно передать его в качестве второго аргумента частичное () или частичное () перемещение аргумента $ model в третье позиция. Например, если есть Частичный пейджер вы хотите использовать это в модуле «список», вы можете получить это следующим образом:

<?php echo $this->partial('pager.phtml', 'list', $pagerData) ?>

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

РЕДАКТИРОВАТЬ - Доступ к частям представления из области действия контроллера

$this->view->getHelper('partial')->partial('comments.phtml');
2 голосов
/ 31 марта 2010

Отличное спасибо:)

Однако, как мне это сделать через контроллер? У меня есть fancybox и я настроил макет ajax:

$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-> частичное будет таким же, как использование $ this-> частичное внутри шаблона представления, но я думаю, что нет. Идеи?

решено VIA:

Bootstrap initView, добавлено:

$view->addScriptPath('../application/layouts/partials');

Переместил мои частичные файлы в этот каталог. Затем в моем контроллере я делаю:

$this->view->layout()->setLayout('ajax');
$this->view->form  = $form;
$this->renderScript('login.phtml');

Спасибо за #zftalks SmartSsa

...