2014-11-04 3 views
0

Я пытаюсь создать помощник представления ZF2, который выводит сообщение в блоге с различными форматами отображения. Сообщение составлено из заголовка, тела и нижнего колонтитула.ZF2 Nesting Views in View Helper

Я попытался создать помощник вида, используя пример вложенности в ZF2 docs.

// пост помощника

public function __invoke(PostInterface $post, $is_single = true){ 
$view_model = new ViewModel(); 

$view_model->setTemplate('editorial/partials/complete'); 
$view_model->setVariable('object', $post); 
$view_model->setVariable('is_single', $is_single); 

$body_model = new ViewModel(); 
$body_model->setTemplate('editorial/partials/xx_display_format_partial_xx'); 
$body_model->setVariable('object', $post);  
$view_model->addChild($body_model, 'body'); 
... repeat for header and footer 

return $this->getView()->render($view_model); 
} 

// редакционный/обертоны/complete.phtml

echo $this->header; 
echo $this->body; 
echo $this->footer; 

я не получаю никаких ошибок при вторя помощник вида. Проблема в том, что выхода нет.

Является ли то, что я пытаюсь сделать, даже возможно? Если да, то что я делаю неправильно?

+0

Вопрос не ясно, вы сказали, что вы не получите никаких ошибок, но то, что это проблема тогда? –

+0

Нет вывода – L4DD13

ответ

1

Попробуйте это решение https://stackoverflow.com/a/15193978/981820

Он говорит, что это на самом деле PphRenderer не оказывает мнения ребенка. В этом учебном руководстве показано, как это работает с точки зрения действия, и оно работает, потому что в этом случае представление отображается с помощью функции Zend \ View \ View :: render()

Итак, решение вашей проблемы - сделать вашу вложенные представления так же, как это делается там.

ОБНОВЛЕНО

Или вы можете сделать это еще проще. Просто визуализируйте свои представления отдельно и присоедините каждый вывод к своему основному виду в виде переменной. См. Пример:

$view = new ViewModel(); 
$body = new ViewModel(); 
$header = new ViewModel(); 
$footer = new ViewModel(); 

//... some setup 

$view->setVariable('body', $this->getView()->render($body)); 
$view->setVariable('header', $this->getView()->render($header)); 
$view->setVariable('footer', $this->getView()->render($footer)); 


return $this->getView()->render($view); 

Он должен быть тем же самым результатом и более оптимизирован с точки зрения вашей задачи. Причина, по которой код из Zend \ View \ View :: render() более сложный, чем этот, потому что он контролирует все возможные случаи, но вам не нужно делать то же самое для своей задачи.

+0

Это метод, который я уже пробовал. Он работает, однако я надеялся, что смогу использовать следующие методы модели представления. Теперь я должен использовать этот метод. Спасибо – L4DD13

0

попробовать это: создать модель ребенка, а затем установить модель ребенка в качестве переменной для родительской модели

$body_model = new ViewModel(); 
$body_model->setTemplate('editorial/partials/xx_display_format_partial_xx'); 
$body_model->setVariable('object', $post);  

$view_model = new ViewModel(); 

$view_model->setTemplate('editorial/partials/complete'); 
$view_model->setVariable('object', $post); 
$view_model->setVariable('is_single', $is_single); 
$view_model->setVariable('body', $body_model);//<----------------------------- 

 Смежные вопросы

  • Нет связанных вопросов^_^