Редактирование оригинального сообщения, чтобы быть более четким. Теперь есть новая область проблем, которую я считаю чистым синтаксисом.ZF2 Partial ViewHelper
Я новичок в OOP и Zend Framework 2. Попытка понять использование партитур. Я также распространяю приложение, которое сначала запускает кто-то другой. Таким образом, соглашение об именах Entity/Gateway/Controller/View гарантирует, что для указанного действия возвращается правильный шаблон.
Я пытаюсь использовать "partial ('/ nav/index.phtml');" как способ вставки одного фрагмента в заголовок на индексной странице. Но я хочу использовать другое частичное на других страницах.
По предложению Маршалла, в TemplateController, я добавляю переменную (nav_template) с указанием ViewModel, которая частичного использования для навигации:
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class TplController extends AbstractActionController
{
public function topicAviewAction()
{
$viewModel = new ViewModel();
$viewModel->setTerminal(true);
$viewModel->setVariable('nav_template', 'nav/topica.phtml');
return $viewModel;
}
public function topicBviewAction()
{
$viewModel = new ViewModel();
$viewModel->setTerminal(true);
$viewModel->setVariable('nav_template', 'nav/topicb.phtml');
return $viewModel;
}
}
Я использовал следующую команду, чтобы убедиться, что моя переменная была включаются в объекте, который он был
echo $viewModel->nav_template;
Однако, когда я иду, чтобы включить частичный в layout.phtml, используя следующее:
<?php echo $this->partial(isset($nav_template) ? $nav_template : 'nav/index'); ?>
Очевидно, что не используется/не найдено значение $ nav_template. Где я неправ?
Это потому, что вы устанавливаете переменную в скрипте вида, а не макет. См. Мой ответ еще раз и внимательно посмотрите на то, что переменной присваивается: '$ this-> layout() -> setVariable (' –
Кроме того, вы не собираетесь, чтобы ваш макет отображался вообще, если вы используете 'setTerminal (true)' - который отключает макет –
Вот полезное сообщение в блоге от Роба Аллена о доступе к переменным viw в другой модели просмотра: http://akrabat.com/zend-framework-2/access-view-variables-in -another-view-model/ – dualmon