【问题标题】:How does Zend Framework 2 render partials inside a module?Zend Framework 2 如何在模块内渲染部分内容?
【发布时间】:2012-06-09 20:00:08
【问题描述】:

我在一个模块中的目录结构有这样的东西:

Api
├── Module.php
├── config
│   └── module.config.php
├── src
│   └── ( ..etc ..)
└── view
    ├── api
    │   └── api
    │       └── index.phtml
    └── partial
            └── test.phtml

然后,我正在这样做:

<?= $this->partial('partial/test.pthml', array()); ?>

但是,我得到:

05-Jun-2012 14:56:58] PHP 致命错误:未捕获的异常 带有消息的“Zend\View\Exception\RuntimeException” 'Zend\View\Renderer\PhpRenderer::render: 无法渲染模板 “部分/test.pthml”;解析器无法解析到文件' /Users/jeff/web/n/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php:463

我的部分应该去哪里?

【问题讨论】:

  • 您的目录结构正确,并且您的局部视图助手设置正确。只需确保您已将 'template_path_stack' =&gt; array('user' =&gt; __DIR__ . '/../view') 添加到您的 module.config.php 文件中,您应该会很好。

标签: php zend-framework2


【解决方案1】:

您是否尝试在调用 View Helper partial() 时包含您的模块名称?

http://packages.zendframework.com/docs/latest/manual/en/zend.view.helpers.html#zend.view.helpers.initial.partial.modules

<?php echo $this->partial('pager.phtml', 'list', $pagerData) ?>

【讨论】:

    【解决方案2】:

    这可以通过

    来实现
     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',
            ),
    
    
        ),    
    
    );
    

    【讨论】:

    • 在我的模块中,我使用以下内容: $this->partial('{module}/{controller}/{filename}.phtml',array('var_name_in_partial' => $data)) ;
    猜你喜欢
    • 2015-01-02
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 2018-04-30
    • 2011-11-03
    相关资源
    最近更新 更多