axis/axis-hybrid-templating-plugin

此软件包已被弃用,且不再维护。未建议替代软件包。

symfony 1.x 插件,允许在 symfony 中使用多个模板引擎。

dev-master 2014-10-06 10:46 UTC

This package is not auto-updated.

Last update: 2020-05-15 16:49:58 UTC


README

此插件允许您在 symfony 1.x 中同时使用不同的模板引擎,并按优先级顺序进行回退。

例如,您可以为应用程序布局装饰器指定 PHP 模板,并为动作视图指定 Twig 模板。

安装

使用 Composer。只需将此依赖项添加到您的 composer.json 文件中。

  "require": {
    "axis/axis-hybrid-templating-plugin": "dev-master"
  }

配置

要启用项目中混合模板,您应该配置 symfony 使用混合视图进行布局和部分,使用 module.yml 配置文件。

all:
  view_class: \Axis\S1\HybridTemplating\View\Hybrid   # means HybridView class
  partial_view_class: \Axis\S1\HybridTemplating\View\Hybrid   # means HybridPartialView class

这就完成了。

默认情况下,唯一启用的模板引擎是 PHP。您可以根据以下说明启用其他模板引擎。

模板引擎优先级

有时您会在项目中找到多个给定部分或控制器视图的模板。那么问题是什么将被首先加载。要控制模板引擎的优先级,您可以在项目的 factories.yml 文件中使用 Hybrid 模板加载器的 priority 选项。

  hybrid_templating.loader:
    parameters:
      priority: [twig, php] # these are extensions of supported templating engines in order of priority

  hybrid_templating.loader:
    parameters:
      priority:
        twig: 100 # highest priority > will be checked first
        php:  1   # lowest priority > will be checked last

这种配置可以导致您控制的明确的模板加载器顺序。默认情况下,模板引擎按其在 factories.yml 文件中定义的顺序进行检查。

注意:此 factories.yml 配置方法由 AxisServiceContainerPlugin 支持

Twig

要使用 Twig 模板引擎,您应该将 axis/axis-twig-plugin 包含到您的项目中。只需在您的 composer.json 文件中添加对该包的依赖项。

  "require": {
    "axis/axis-twig-plugin": "dev-master"
  }

然后,您应该配置 Twig 引擎以用于混合模板。将以下内容添加到您的项目的 factories.yml 文件中:

all:
  hybrid_templating.engine.twig:
    class: \Axis\S1\HybridTemplating\Engine\TwigTemplatingEngine
    parameters:
      twig: context://twig
    tag: hybrid_templating.engine

使用示例

假设您有一个应用程序

apps/
  - hybrid/
    - config/
      - app.yml
      - module.yml
      - routing.yml
      - settings.yml
    - modules/
      - homepage/
        - actions/
          - actions.class.php
        - templates/
          - _partial.twig
          - indexSucces.php
    - templates/
      - layout.twig

如您所注意到的,您的控制器视图使用 PHP 模板,而布局和部分使用 Twig 模板。这将透明地切换模板引擎上下文,并在模板之间传递指定的变量。