Skip to content
これは pieceofcake2/twig-view のドキュメントです。pieceofcake2/cakephp 用の CakePHP 2.x プラグインです。 このフォークについて

よく使われる Twig エクステンション ​

このドキュメントでは、テンプレートを強化できる、よく使われるサードパーティーの Twig エクステンションを紹介します。

インストール ​

Composer でエクステンションをインストールし、config/bootstrap.php (レガシーレイアウトでは app/Config/bootstrap.php) で登録します。

php
Configure::write('TwigView.extensions', [
    'ExtensionClassName',
]);

Twig エクステンション ​

twig/intl-extra ​

PHP の intl 拡張モジュールを使った国際化のフィルターと関数です。

bash
composer require twig/intl-extra
php
use Twig\Extra\Intl\IntlExtension;

Configure::write('TwigView.extensions', [
    new IntlExtension(),
]);

機能:

twig
{# Format currency #}
{{ '1000.50'|format_currency('USD') }}  {# $1,000.50 #}

{# Format numbers #}
{{ '1234.56'|format_number }}  {# 1,234.56 #}

{# Format dates #}
{{ user.created|format_date('long') }}

{# Format datetime #}
{{ user.created|format_datetime('medium', 'short') }}

twig/string-extra ​

文字列を操作する追加のフィルターです。

bash
composer require twig/string-extra
php
use Twig\Extra\String\StringExtension;

Configure::write('TwigView.extensions', [
    new StringExtension(),
]);

機能:

twig
{# Truncate string #}
{{ 'Lorem ipsum dolor'|u.truncate(10, '...') }}  {# Lorem ipsu... #}

{# Word wrap #}
{{ long_text|u.wordwrap(80) }}

{# Camelcase #}
{{ 'hello world'|u.camel }}  {# helloWorld #}

{# Snake case #}
{{ 'HelloWorld'|u.snake }}  {# hello_world #}

{# ASCII transliteration #}
{{ 'Tëst'|u.ascii }}  {# Test #}

twig/html-extra ​

HTML の操作と生成です。

bash
composer require twig/html-extra
php
use Twig\Extra\Html\HtmlExtension;

Configure::write('TwigView.extensions', [
    new HtmlExtension(),
]);

機能:

twig
{# Add CSS classes #}
<div class="{{ 'foo'|classes('bar', 'baz') }}">

{# Generate HTML attributes #}
<input {{ html_attributes({type: 'text', name: 'email'}) }}>

twig/markdown-extra ​

テンプレートでの Markdown のレンダリングです。

bash
composer require twig/markdown-extra
composer require league/commonmark  # or michelf/php-markdown
php
use Twig\Extra\Markdown\MarkdownExtension;

Configure::write('TwigView.extensions', [
    new MarkdownExtension(),
]);

機能:

twig
{# Render markdown #}
{{ '**bold** text'|markdown_to_html }}

{# Markdown block #}
{% apply markdown_to_html %}
# Heading
This is **markdown** content.
{% endapply %}

twig/cssinliner-extra ​

メールテンプレート用に CSS のスタイルをインライン化します。

bash
composer require twig/cssinliner-extra
composer require tijsverkoyen/css-to-inline-styles
php
use Twig\Extra\CssInliner\CssInlinerExtension;

Configure::write('TwigView.extensions', [
    new CssInlinerExtension(),
]);

機能:

twig
{% apply inline_css %}
<html>
<head>
    <style>
        h1 { color: red; }
    </style>
</head>
<body>
    <h1>Hello</h1>
</body>
</html>
{% endapply %}

{# Output: <h1 style="color: red;">Hello</h1> #}

twig/inky-extra ​

Foundation for Emails フレームワークとの統合です。

bash
composer require twig/inky-extra
composer require hampe/inky
php
use Twig\Extra\Inky\InkyExtension;

Configure::write('TwigView.extensions', [
    new InkyExtension(),
]);

機能:

twig
{% apply inky_to_html %}
<row>
    <columns large="6"></columns>
    <columns large="6"></columns>
</row>
{% endapply %}

サードパーティーのエクステンション ​

aptoma/twig-markdown ​

複数のパーサーをサポートする、もう 1 つの Markdown エクステンションです。

bash
composer require aptoma/twig-markdown

jasny/twig-extensions ​

日付、PCRE、テキスト、配列のフィルターなど、便利なエクステンションを集めたものです。

NOTE

このエクステンションは CakePHP 5.x 向けの cakephp/twig-view で使われていますが、メンテナンス性と互換性のため、できるだけ Twig の組み込み機能や公式の Twig Extra エクステンションを使うことをお勧めします。

bash
composer require jasny/twig-extensions

機能:

  • 日付の操作
  • PCRE の正規表現関数
  • テキストの整形
  • 配列の操作

カスタムエクステンションの作成 ​

独自のエクステンションを作成する方法は 設定 をご覧ください。

構成の例:

php
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
use Twig\TwigFunction;

class MyExtension extends AbstractExtension
{
    public function getFilters(): array
    {
        return [
            new TwigFilter('my_filter', [$this, 'myFilter']),
        ];
    }

    public function getFunctions(): array
    {
        return [
            new TwigFunction('my_function', [$this, 'myFunction']),
        ];
    }

    public function myFilter($value)
    {
        return strtoupper($value);
    }

    public function myFunction($arg)
    {
        return 'Result: ' . $arg;
    }
}

リソース ​

著作権とライセンスについては LICENSE を参照してください。Cake Software Foundation とは関係ありません。