あなた自身のフィルタや関数を書く


Twigは拡張を行うための柔軟な方法を提供します.
ねじれを実行することによってAbstractExtension クラスでは、独自のカスタムフィルタとテンプレートで使用できる機能を作成することができます.

独自のフィルタを作成


例えば、フィルタを作りたいならbold and italic Webページ上の文字を太字で斜体にするには、次のようにします.
{{ "Bold string"|bold }}

{{ "Italic string"|italic }}
それから、我々は広がる新しいクラスをつくることができますAbstractExtension 関数を実装するgetFilters() :
//MyExtension.php

use \Twig\Extension\AbstractExtension;
use \Twig\TwigFilter;

class MyExtension extends AbstractExtension {
    public function getFilters() {
        return [
            new TwigFilter('bold', [$this, 'makeBold']),
            new TwigFilter('italic', [$this, 'makeItalic']),
        ];
    }

    public function makeBold($str) {
        return '<b>'.$str.'</b>';
    }

    public function makeItalic($str) {
        return '<i>'.$str.'</i>';
    }    

}
上記のコードスニペットではTwigFilter オブジェクト
フィルタbold and italic 機能上getFilters() .
関数makeBold($str) and makeItalic($str) ロジックを実装する
HTMLコードで文字を太字で斜体にすること.

独自の関数の作成


関数を作成する場合はgetFunctions() このように:
//MyExtension.php

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

class MyExtension extends AbstractExtension {
    public function getFilters() {
        return [
            new TwigFilter('bold', [$this, 'makeBold']),
            new TwigFilter('italic', [$this, 'makeItalic']),
        ];
    }

    public function getFunctions() {
        return [
            new TwigFunction('getArea', [$this, 'getArea']),
        ];
    }

    public function makeBold($str) {
        return '<b>'.$str.'</b>';
    }

    public function makeItalic($str) {
        return '<i>'.$str.'</i>';
    }    

    public function getArea($len) {
        return $len * $len;
    }
}
上記のコードスニペットでは、新しいTwigFunction 正方形の面積を計算するオブジェクト
機能上getFunctions() . 詳細ロジックは関数getArea($len) .

使い方


新しい作成されたtwig拡張子をテストするには、次のようにします.
require_once './vendor/autoload.php';
require_once 'MyExtension.php';

$loader = new \Twig\Loader\FilesystemLoader('./themes');

$twig = new \Twig\Environment($loader, ['autoescape' => false]);

$twig->addExtension(new MyExtension());

echo $twig->render('test-extension.twig', array("len" => "9"));
まず、作曲家のPHPファイルautoload.PHPは、トゥウィグの名前空間を実際のフォルダーにマップするために含まれます.我々の新しい作成されたフィルタを使用するとき、テンプレートにHTMLコードを挿入するために、我々は無効にする必要がありますautoescape オプションを初期化するときにEnvironment . 次に、新しく作成した拡張モジュールを追加しますMyExtension . 最後に、テンプレートのテスト拡張を行います.正方形の片側の長さを通過することによるねじれ.len .
テンプレートのテスト拡張.ねえ、我々は呼び出すことができますbold , italic and getArea() 下記のようになります.
<h1>{{ "Twig Extension Demo"|italic }}</h1>
<p>
If the length of one side of a square is {{ len|bold }} meter, 
the area of the square is {{ getArea(len)|bold }} square meters.
</p>
レンダリング後、Webページは次のようになります.

読書ありがとう!
より多くのプログラミングチュートリアルを見つけるために、訪問してくださいCodeBilby.com