alanrodas / twig-view
CakePHP 2.x 的 Twig 视图
Requires
- php: >=5.2.4
- composer/installers: *
- twig/twig: 1.*
Requires (Dev)
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2024-10-02 09:29:12 UTC
README
此插件适用于 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