Zend Framework 2 - 如何从库中包含部分

Jon*_*nas 7 php partial-views view-helpers zend-view zend-framework2

我写了一些我想在几个模块中使用的部分.我认为最好的方法是将它放入我的自定义库中.

但不幸的是,我无法找到一种方法来包含这个部分而不使用非常丑陋的路径,如:

echo $this->partial('/../../../../vendor/myvendor/library/MyVendor/View/Views/FormPartial.phtml'
, array(...));
Run Code Online (Sandbox Code Playgroud)

有什么想法如何从我的视图链接到我的供应商目录?

Raj*_*Raj 14

问题是解析程序无法解析您提供的视图模板的路径.我通常在module.config.php 的template_map条目中为所有可访问的部分添加配置条目

例如我有这样的页眉和页脚部分我的视图/ layout/header.phtml和view/layout/footer.phtml

下面是我的配置

'template_map' => array(
    'layout/layout'         => __DIR__ . '/../view/layout/layout.phtml',
    'header'                => __DIR__ . '/../view/layout/header.phtml',
    'footer'                => __DIR__ . '/../view/layout/footer.phtml',
    'error/404'             => __DIR__ . '/../view/error/404.phtml',
    'error/index'           => __DIR__ . '/../view/error/index.phtml',
),
Run Code Online (Sandbox Code Playgroud)

在我的布局视图脚本里面我简单地说

<?php echo $this->partial('header'); ?>
Run Code Online (Sandbox Code Playgroud)

<?php echo $this->partial('footer'); ?>
Run Code Online (Sandbox Code Playgroud)

另一个如果你的部分在/ module/controller/action格式下你也可以

<?php echo $this->partial('/module/controller/action'); ?>
Run Code Online (Sandbox Code Playgroud)

您应该将视图脚本放在模块控制器文件夹的视图文件夹中