3

Silex フレームワークで Twig のカスタム フィルターを追加する必要があります。たとえば、この関数をいくつかの変数に適用したい:

public function addExclamation($text) {
    return $text.'!!!';
}

twig-template では、次のようにします。

{{ text|exclam }}

http://twig.sensiolabs.org/doc/advanced.htmlを読んだ後、「Project_Twig_Extension.php」を作成します。

class Project_Twig_Extension extends Twig_Extension
{
    public function getName()
    {
        return 'project';
    }

    public function getFilters()
    {
        return array(
            new Twig_SimpleFilter('exclam', 'addExclamation'),
        );
    }

    public function addExclamation($text) {
        return $text.'!!!';
    }
}

しかし、このファイルをどこに置く必要があるのか​​、このフィルターを Silex の「index.php」に登録する方法がわかりません。

ステップバイステップのガイドを教えてもらえますか? Twig addFilter using Silex?で説明されている方法 働かないでください。

4

2 に答える 2

2

次のようなカスタム フィルターを追加できます。

$app['twig'] = $app->share($app->extend('twig', function(\Twig_Environment $twig) {
    $twig->addFilter(new Twig_SimpleFilter('exclaim', function ($value) {
        return $value.'!!!';
    }));

    return $twig;
}));

参照: http://silex.sensiolabs.org/doc/providers/twig.html#customization

于 2016-03-13T06:53:13.763 に答える
0

記録として、Twig 拡張機能を登録する新しい方法は次のとおりです。

$app['twig'] = $app->extend('twig', function (\Twig_Environment $twig, Silex\Application $app) {
    $twig->addExtension(new My_Twig_Extension($app));

    return $twig;
});

ドキュメントhttp://silex.sensiolabs.org/doc/providers/twig.html#customizationが更新されました。

ティム

于 2017-01-06T17:20:15.757 に答える