В ZF1 мы используем частично в файле layout.phtml что-то вроде этого
$this->partial('header.phtml', array('vr' => 'zf2'));
Как мы можем сделать то же самое в ZF2?
это может быть достигнуто
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'));