6

在 ZF1 中,我们在 layout.phtml 文件中使用部分类似的东西

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

我们如何在 ZF2 中做同样的事情?

4

2 回答 2

27

这可以通过

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

您可以使用访问视图中的变量

echo $this->vr;

不要忘记在 module.config.php 文件的 view_manager 中添加以下行。

'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',
        ),


    ),    

);
于 2012-08-29T14:43:11.160 回答
6

如已接受的答案中所述,您可以使用

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'));
于 2013-04-09T13:32:19.487 回答