ZF3 - 从模块目录外部使用部分

ZF3 - using partial from outside of module directory

我正在使用我自己的库构建基于 ZF3 的应用程序,该库包含要包含在其他项目中的基本组件。库是基于作曲家的,因此应用程序树如下所示:

- module
-- Application
--- src
---- view
----- index.phtml (where I want to include partial from base)
- vendor
-- myBaseScripts (installed via composer)
--- partials
---- myTablePartial.phtml (partial to include)

我可以包含不在 module/Application/view 内但在 vendor/myBaseScripts/partials 内的部分吗?

当然可以。但是,特此建议您确保您正在创建的模块包含默认视图。


要注册视图部分,请使用模块的配置,如下所示:

'view_manager' => [
    'template_map' => [
        'name/of/partial/view' => __DIR__ . '/../path/relative/to/config/file/view-partial.phtml',
    ],
],

确保您的模块包含与上述类似的内容。

然后您可以像这样在视图中使用它:

<?= $this->partial('name/of/partial/view', ['param1' => 'value1']) ?>

$this->partial 是一个 ViewHelper。它采用的第一个参数是要加载的部分(按名称!)。第二个参数是一个可选数组,其中包含 key/value 对数据。


要用另一个模块中的自定义部分覆盖部分部分(例如默认模块部分部分),您必须覆盖配置中 key/value 对的值。

这个模块,修改了部分,必须在 'original' 一个 之后加载。这是为了确保按照您期望的顺序覆盖配置。

假设上面的代码在您的原始模块中,您将在另一个模块中执行以下操作:

'view_manager' => [
    'template_map' => [
        'name/of/partial/view' => __DIR__ . '/../path/relative/to/config/file/this-is-a-custom-partial.phtml',
    ],
],

如你所见,名字还是一样。

编码愉快。