Как использовать частичное в zendframework2

В ZF1 мы используем частично в файле layout.phtml что-то вроде этого

$this->partial('header.phtml', array('vr' => 'zf2')); 

Как мы можем сделать то же самое в ZF2?

Solutions Collecting From Web of "Как использовать частичное в zendframework2"

это может быть достигнуто

  echo $this->partial('layout/header', array('vr' => 'zf2')); 

вы можете получить доступ к переменной в поле зрения, используя

 echo $this->vr; 

не забудьте добавить следующую строку в свой view_manager файла module.config.php.

 'layout/header' => __DIR__ . '/../view/layout/header.phtml', 

после добавления выглядит так:

 return array( 'view_manager' => array( 'template_path_stack' => array( 'user' => __DIR__ . '/../view' , ), 'display_not_found_reason' => true, 'display_exceptions' => true, 'doctype' => 'HTML5', 'not_found_template' => 'error/404', 'exception_template' => 'error/index', 'template_map' => array( 'layout/layout' => __DIR__ . '/../view/layout/layout.phtml', 'layout/header' => __DIR__ . '/../view/layout/header.phtml', 'error/404' => __DIR__ . '/../view/error/404.phtml', 'error/index' => __DIR__ . '/../view/error/index.phtml', ), ), ); 

Как уже было сказано в принятом ответе, вы можете использовать

 echo $this->partial('layout/header', array('vr' => 'zf2')); 

но тогда вы должны определить layout/header в своем module.config.php.


Если вы не хотите загромождать свой template_map , вы можете использовать относительный путь на основе template_path_stack чтобы напрямую указать на частичный.

Предположим, вы определили:

 'view_manager' => array( /* [...] */ 'template_path_stack' => array( 'user' => __DIR__ . '/../view' , ), 'template_map' => array( 'layout/layout' => __DIR__ . '/../view/layout/layout.phtml', 'error/404' => __DIR__ . '/../view/error/404.phtml', 'error/index' => __DIR__ . '/../view/error/index.phtml', ), ), ); 

в вашем module.config.php и ваши listsnippet.phtml находятся в .../view/mycontroller/snippets/listsnippet.phtml , тогда вы можете использовать следующий код:

 echo $this->partial('mycontroller/snippets/listsnippet.phtml', array('key' => 'value'));