cakephp/twig-view

CakePHP 的 Twig 视图

安装次数: 2,804,091

依赖: 7

建议者: 0

安全: 0

星标: 13

关注者: 19

分支: 6

公开问题: 2

类型:cakephp-plugin

2.0.2 2024-07-02 20:42 UTC

This package is auto-updated.

Last update: 2024-09-10 13:59:26 UTC


README

CI Latest Stable Version Total Downloads Code Coverage Software License

此插件允许您在视图中使用 Twig 模板语言

它为常见的视图操作提供了包装,并提供了许多有用的扩展,这些扩展暴露了 CakePHP 函数和 jasny/twig-extensions 辅助函数。

安装

使用 Composer 安装,请使用以下命令。

composer require cakephp/twig-view

然后,在您的 Application 引导文件中像其他 Cake 插件一样加载 Cake/TwigView 插件。

配置

TwigView 允许您通过 View 选项配置 Twig 环境。您可以通过 Controller 中的 ViewBuilder 设置这些选项,或者在 TwigView 中直接设置它们。

// In controller
public function initialize(): void
{
    $this->viewBuilder()->setOption('environment', ['cache' => false]);
}

// In your AppView
public function initialize(): void
{
    $this->setConfig('environment', ['cache' => false]);

    // Call parent TwigView initialize
    parent::initialize();
}

可用选项

  • 环境

    Twig 环境选项.

    默认为空。

  • markdown

    用于 markdown_to_html 过滤器的 markdown 引擎。设置为 default 以使用 DefaultMarkdown 或设置自定义 Twig Markdown 扩展 MarkdownInterface 实例。

    如果使用 default,则需要以下之一:- erusev/parsedown - league/commonmark - michelf/php-markdown

    默认为禁用。

AppView 设置

要开始在您的应用程序中使用 Twig 模板,只需在您的 AppView 中扩展 TwigView。通常,在 AppView::initialize() 中添加您应用程序的设置是安全的。

namespace App\View;

use Cake\TwigView\View\TwigView;

class AppView extends TwigView
{
    public function initialize(): void
    {
        parent::initialize();

        // Add application-specific extensions
    }
}

自定义

您可以通过覆盖 TwigView 初始化的几个部分来创建自定义的 Twig 设置。

  • 文件扩展名

    您可以通过覆盖 $extensions 属性来指定用于搜索模板的文件扩展名。

    class AppView extends TwigView
    {
        protected $extensions = [
            '.custom',
        ];
    }
  • Twig 加载器

    您可以通过覆盖 Twig 使用的模板加载器。

    protected function createLoader(): \Twig\Loader\LoaderInterface
    {
        // Return a custom Twig template loader
    }
  • Twig 扩展

    您可以覆盖Twig扩展的加载。如果您想使用内置的 View 包装器,请确保加载 Cake\TwigView\Twig\Extensions\ViewExtension

    protected function initializeExtensions(): void
    {
        // Load only specific extensions
    }
  • Twig 分析器

    当加载 DebugKit 时,您可以覆盖 Twig 分析器。

        protected function initializeProfiler(): void
        {
            parent::initializeProfiler();
            // Add custom profiler logging using $this->getProfile()
        }

模板

您可以使用 Twig 模板创建视图,就像您可以使用标准的 CakePHP 模板一样。

模板的加载方式与其使用位置相同,并遵循 View 路径约定。

{% extends 'Common/base' %}
{{ include('Common/helper') }}
  • 模板名称始终相对于 App.path.templates 而不是当前文件。
  • 文件扩展名将自动生成。默认为 '.twig'。
  • 可以从插件加载模板,就像从 View 模板一样。

布局模板受支持,并且以与 View 布局相同的方式加载。

templates/layout/default.twig:

<!DOCTYPE html>
<html>
<head>
    <title>
        {{ fetch('title') }}
    </title>

    {{ fetch('meta') }}
    {{ fetch('css') }}
    {{ fetch('script') }}
</head>
<body>
    {{ fetch('content') }}
</body>
</html>

您可以使用 layout 标签从模板中设置布局。

{% layout 'Error' %}

访问视图

您可以使用 _view 全局变量访问 View 实例。

TwigView 提供了 fetch()cell()element() 渲染的包装器。单元格和元素模板始终从 cell/element/ 子目录中加载,就像 View 模板一样。

{{ fetch('content')}}

{{ cell('myCell')}}
{{ element('myElement') }}

TwigView 还提供了任何加载的辅助函数的包装器,使用特殊的命名约定 - helper_Name_function()

{{ helper_Text_autoParagraph('some text for a paragarph') }}

所有包装函数都是预先转义的,不需要使用 |raw 过滤器。然而,请注意,Twig 在使用 {{ }} 打印时保留了空白。请阅读 Twig 文档了解如何在需要时删除额外的空白。

扩展过滤器

查看 jasny/twig-extensions 了解它们提供的过滤器。

扩展函数

查看 jasny/twig-extensions 了解它们提供的函数。