如何在zend框架中使用partial 2

时间:2012-08-29 14:19:04

标签: php zend-framework2 partials view-helpers

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

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

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

2 个答案:

答案 0 :(得分: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',
        ),


    ),    

);

答案 1 :(得分:6)

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

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

但是你必须在你的module.config.php中定义layout/header


如果您不想让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'));