alanrodas/twig-view

CakePHP 2.x 的 Twig 视图

安装: 112

依赖者: 0

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 0

开放问题: 0

类型:cakephp-plugin

1.1 2015-07-10 02:19 UTC

This package is not auto-updated.

Last update: 2024-10-02 09:29:12 UTC


README

Build Status Latest Stable Version Total Downloads Coverage Status Bitdeli Badge

此插件适用于 CakePHP 框架,允许您在视图中使用 Twig 模板语言

除了启用大多数 Twig 功能外,该插件与 CakePHP 视图渲染器紧密集成,让您可以完全访问辅助函数、对象和元素。

安装

确保您已安装并配置了 composer,并在引导期间注册自动加载器,如此处所述。确保您有 composer.json 并将以下内容添加到您的需求部分。

"wyrihaximus/twig-view": "dev-master"

缓存权限

确保默认视图缓存文件夹可写。

APP/Plugin/TwigView/tmp/views

或者:设置缓存文件存储的位置。

define('TWIG_VIEW_CACHE', APP . 'tmp');

使用视图类

要使 CakePHP 识别 TwigView,请编辑您的 APP/Controller/AppController.php 文件并添加以下内容

class AppController extends Controller  {
	public $viewClass = 'TwigView.Twig';
}

确保在您的 bootstrap.php 文件中使用以下方式加载 TwigView 插件

CakePlugin::load('TwigView', array('bootstrap' => true));

CakePlugin::loadAll();

现在开始创建使用 .tpl 扩展名的视图文件。

默认布局

此插件包含所有默认布局转换为 Twig。示例可以在

APP/Plugin/TwigView/examples

主题

该插件支持主题,并像 Theme 视图一样工作。只需将 $theme 属性添加到您的控制器中即可。

class AppController extends Controller  {
	public $viewClass = 'TwigView.Twig';
	public $theme = 'Rockstar';
}

这将导致视图也查找 Themed 文件夹中的模板。在上面的示例中,优先考虑以下目录中的模板,而不是它们的非主题版本。

APP/View/Themed/Rockstar/

例如,如果您想覆盖 Rockstar 主题中的 Layouts/default.tpl 文件,则创建此文件

APP/View/Themed/Rockstar/Layouts/default.tpl

在模板中使用辅助函数

所有辅助函数对象都可在视图中使用,并且可以在 Twig 中像任何其他变量一样使用。

{{ time.nice(user.created) }}

...

{{ time.nice(user.created) }}
    ^    ^    ^    ^____key
    |    |    |____array (from $this->set() or loop)
    |    |_____ method
    |______ helper

这相当于写入

<?php echo $this->Time->nice($user['created']); ?>

更复杂的示例,FormHelper 输入

{{
  form.input('message', {
    'label': 'Your message',
    'error': {
      'notempty': 'Please enter a message'
    }
  })
}}

引用视图元素

元素必须是 .tpl 文件,并且作为 Twig 模板进行解析。使用 .ctp 是不可能的。

作为这种限制的交换,您可以像这样轻松导入元素

{{ _view.element('Plugin.element') }}

翻译字符串

可以在任何字符串上使用 trans 过滤器,它只是将前面的字符串传递给 __() 函数。

{{
  form.input('email', {
    'label': 'Your E-Mail Address'| trans
  })
}}

这相当于写入

<?php echo $this->Form->input('email', array(
   'label' => __("Your E-Mail Address")
)); ?>

翻译多行

trans-block 元素可以帮助您完成这项工作。这在编写使用 Twig 的电子邮件模板时特别有用。

{% trans %}
Hello!

This is my mail body and i can translate it in X languages now.
We love it!
{% endtrans %}

访问视图实例

在某些情况下,访问 $this 很有用,例如,从当前控制器和操作名称构建 DOM id。

对象可通过 _view 访问。

<div class="default" id="{{ _view.name|lower ~ '_' ~ _view.action|lower }}">

预编译所有模板

Twig 必须在模板可以使用之前编译所有模板。这会给页面加载添加一次每个模板的延迟。这可以通过使用编译模板 shell 命令来抵消。此命令扫描所有模板,并使用 Twig 编译它们以进行缓存和性能提升。

./cake TwigView.compile_templates all