問題タブ [twig-extension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
483 参照

symfony - 拡張されたブロックのレンダリング -> 含まれるテンプレート

問題

navbar.html.twigのようなブロックがあります。

このナビゲーションバーはinclude私のbase.html.twig.

そして、私のページテンプレートextendがベースです。

しかし、navbar に必要なものは、navbar に表示されません。これはinclude、ベースのそばにあるため、そこに親子関係がないためです。

質問

拡張テンプレートに含まれるテンプレートのブロックをオーバーライドできるようにする良い (または任意の) 方法は何ですか?

0 投票する
0 に答える
383 参照

php - Assetic の Twig 拡張機能を正確に使用するにはどうすればよいですか?

Twig と Slim で Assetic を使用しようとしています (つまり、Symfony なしで)。の作成の基本は理解できたと思いますがAssetCollection、テンプレートでこのコレクションをリンクする方法がよくわかりません。

のようなecho $app->css->dump();ことをすると、すべての CSS が正しく出力されます。すばらしいですが、これを Twig に接続するにはどうすればよいですか?

プロジェクトの README に示されている例では、当初よりも多くの質問が残されています。

一体何/path/to/sass/main.sassですか?を介して資産を宣言していると思いました$factory->createAsset。ドキュメントには、次のように書かれています。

css/src/*.sass拡張機能がデバッグ モードの場合、この同じタグは、グロブによって参照される各アセットに対して 1 つずつ、複数のリンク要素をレンダリングします...

css/src/*.sassREADME の他の場所については何も表示されません。彼らは何を話している?

最後に、README の下部に次のように表示されます。

これは、ビルドステップで一度実行するようなものに思えます (「すべてのテンプレートをループする」)。しかし、Assetic はアセットのオンデマンド フィルタリング (およびキャッシュ) もサポートすると思いました。すべてのリクエストですべてのテンプレートをループしたくないことは明らかです。関連する呼び出しはwriteManagerAssets、Twig 拡張機能によって自動的にトリガーされるべきではありませんか?

どんな助けでも大歓迎です。

0 投票する
0 に答える
136 参照

php - symfony2. 表現でトランスチョイスを使用するのが暑い

symfonyで次のようなことをしようとしています

ofc は単なる例です - どうすれば表現をトランスチョイスに入れることができますか?

0 投票する
1 に答える
9923 参照

php - 小枝: url_decode

小枝フィルター url_encode で url パラメーターをエンコードしました。

URLに出力する

したがって、URLパラメーターを含む要求されたページで

01%2F04%2F2016 と表示されますが、01/04/2016 が必要です

生フィルターを使用してみましたが、小枝拡張も行いました:

しかし、これでも 01%2F04%2F2016 を表示し続けます

コントローラーメソッドで同じ結果が得られます:

これを行う適切な方法は何ですか?

アップデート :

日付は「テキスト」タイプの入力からのものです。いいえ、これは数字と / を含む単純な文字列です。

0 投票する
1 に答える
232 参照

symfony - Generator で Twig フィルタを使用できない

カスタムフィルターを呼び出すと、次のように失敗します。

サービスが登録されています:

それは下にリストされていますcontainer:debug

クラスは次のようになります。

私のフィルターもtwig:debugリストアップしてください。snake_case

twig ファイルは、symfony コマンドによって呼び出されるジェネレーターによってレンダリングされます。

そして、ここでフィルターの呼び出し

0 投票する
1 に答える
125 参照

php - Symfony Twig 拡張機能が他のサービスを壊す - セキュリティの前にテンプレート化が行われていますか?

私は Symfony 2.7 WebApp に取り組んでいます。私が作成したバンドルの 1 つには、ユーザー関連のものを提供するサービスが含まれていますuserHasPurchases()

問題は、 a を含めるとTwig Extesion別のサービスが壊れることです:

AppShopサービス

AppShopBundle\Resources\config\services.yml

これまでのところ、すべて正常に動作しています。AppShopServices現在のユーザーで作成され、userHasPurchases()期待どおりに動作します。

これで、テンプレート内で使用できるようにTwig 拡張機能を追加しました。userHasPurchases()

小枝拡張

AppShopBundle\Resources\config\services.yml に拡張機能を含める

を含めた後Twig ExtensionAppShopServiceそのメソッドuserHasPurchasesは機能しなくなりました。問題は、 のコンストラクターが を返すようになったため、もうAppShopService設定されていないことです。user$tokenStorage->getToken()null

これはどのように可能ですか?を含む以外は何も変更していませんTwig ExtensionTwig Extensionすべてからを削除するとすぐに、services.yml再び正しく機能します。

私の唯一の推測は、Twig Extensionセキュリティの前に作成が行われるということです。しかし、なぜ?

ここで何が間違っているのでしょうか?

0 投票する
1 に答える
129 参照

php - Twig 拡張機能により、存在しないキャッシュ ファイルを読み込もうとしているようです

私は silex ベースのサイト用にこの twig 拡張機能を持っています:

次のようにアプリケーションファイルに登録されています。

これは正しいようです-拡張クラス名にスペルミスを導入すると、私が立ち往生しているものとは異なる例外が発生します。

私は小枝テンプレートでこの拡張機能を で呼び出します{{ maybeDecodeJapanese() }}。これにより、この例外が発生します (テンプレート呼び出し自体が原因ではないようです。スペルミスにより、標準関数が見つからないという例外が生成されます)。

これは /silex/vendor/twig/twig/lib/Twig/Environment.php で発生します

私の最善の推測では、これはある種のキャッシュ ファイルです。開発環境ではキャッシュが無効になっていますが、とにかくキャッシュフォルダーの内容を削除しようとしましたが、役に立ちませんでした。グーグルはまだ他のリードを提供していません。

問題の原因を特定するためのヘルプは非常に役立ちます。

0 投票する
1 に答える
1112 参照

php - Twig 拡張機能が Symfony 2 で動作しない

インド、米ドルなど、さまざまな通貨形式で金額を表示する Twig 拡張機能を作成しました。

Symfony2ガイドで提案されているように、次のようにしています。

NameSpace/AccountBundle/Extension/AccountExtension.php

に登録しましたapp/config/services.yml:

これを小枝ファイルで使用している場合: {{ 50000 | get_money_indian_format }}

次のエラーが表示されます: The filter get_money_indian_formatdoes not exist inEduAccountBundle:Ledger:showLedgers.html.twig

0 投票する
1 に答える
392 参照

php - Symfony2 と Twig: TWIG で使用する PHP 関数を挿入する方法と場所は?

テンプレート TWIG 内で PHP 関数を呼び出す必要があります。その関数を挿入する方法と場所は? ここに私の例: 私のコントローラーは:

私のTwigテンプレートは次のとおりです。

しかし、次のエラー メッセージが表示されます。

名前空間「BackendBundle\Controller」からクラス「Twig_Environment」をロードしようとしました。別の名前空間の「use」ステートメントを忘れましたか?

何が欠けている?

0 投票する
0 に答える
319 参照

symfony - サンドボックス セキュリティ ポリシーを使用して、twig テンプレートでトランスでフィルター処理されたテキストをレンダリングできない

私は少し混乱しています。まず、私のコードを見てください。

これが私がレンダリングしたいテンプレートです

ここでは、ご覧のとおり、型に従ってテンプレートをレンダリングしたいと考えています。問題は、テンプレートの半分が正常にレンダリングされ、翻訳された文字列をレンダリングしようとするとエラーがスローされることです。

render メソッドを呼び出そうとする直前に、この関数が存在するかどうかを確認しましたが、実際には未定義でした。基本的に、ここに 2 つの質問があります。

質問 1 プロジェクトの他の部分ではどのように機能しますが、この特定のハンドラーでは機能しませんか? 以下の「重要な更新」を参照してください。

質問 2 別の方法で問題を解決できますか? たとえば、サンドボックスを使用せずに、または何らかのフラグ「everythingAllowed=true」を指定してサンドボックスを使用しますか?

注意!重要な更新 以前、私は自分の質問を誤解していました。変数のレンダリング中にエラーがスローされたと思いましたが、状況を再確認しました (Alain Tiemblo がコメントで小枝テンプレート コードをここに要求したとき)。また、プロジェクト全体に翻訳があり、問題なく動作しますが、この特定の状況ではそうではありません。サンドボックスを使用せずにテンプレートをレンダリングしようとしたことも言及する価値があると思います。このようにTwig Engineから直接レンダリングしようとしました

結果 - 適切に翻訳されていないテキスト。「ロケール」をダンプすると、特定の言語が得られましたが、テキストは別の言語に翻訳されました。しかし、少なくともこの方法を使用すると、エラーは発生しませんでした..誰かが私のためにこれを明確にすることができますか? Intl/i18n 拡張機能がどのように機能するのか、なぜそれが Sandbox で機能したくないのか、または Sanbox で機能したくないのかを本当に理解していないためですか?

PS私の推測では、Twig Engineから直接動作しないのはなぜですか?おそらく「@templating」のように注入する必要はありません。または、正しく注入されますが、IntlまたはI18n拡張機能が有効になっていませんか? 有効にする方法。Sandbox で動作しない理由がわかりません