1

小枝テンプレート内でphpstripslashes関数を使用したいのですが、この関数は標準の小枝関数ではないため、拡張機能としてtwigに追加する必要があります。コントローラー内でこのコードを試しましたが、機能しません。

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class XController extends Controller
{

public function YAction($page)
{
$twig=$this->get('twig');
$twig->addFunction('functionName', new Twig_Function_Function('someFunction'));
...

「Twig_Function_Function」クラスのuseステートメントが必要ですか?私はこれを間違っていますか?

4

2 に答える 2

4

Twigテンプレートで使用する場合は、コントローラー内で追加や呼び出しを行う必要はありません。ドキュメントの「カスタムTwig拡張機能の作成方法」セクションをお読みください。

基本的に、拡張する拡張クラスを作成してから、タグを使用してサービスとして登録\Twig_Extensionする必要があります。そして最後に、カスタマイズされた小枝関数を追加するためにメソッドを実装する必要があります。twig.extensiongetFunctions()

ただし、あなたの場合は、フィルターを追加することをお勧めします。同じロジックを使用getFilters()して、拡張クラスにメソッドを追加して、カスタマイズしたフィルターを指定することもできます。

また、ドキュメントの「小枝の拡張」セクションを詳しく調べて、小枝を拡張するすべての方法を理解してください。

于 2012-11-17T13:19:00.317 に答える
1

または {{ function('stripslashes', "This\\'ll do") }}

(またはTwigコンテキストを構築するときにstripslashes()を適用します)

しかし、また、これをphpで行う場合:

add_filter('timber/twig', function(\Twig_Environment $twig) {
  $twig->addFunction(new Twig\TwigFunction('stripslashes', 'stripslashes'));
  return $twig;
});

次に、これは小枝で機能します。

{{ stripslashes("This\'ll do...") }}
于 2019-07-11T16:28:45.077 に答える