問題タブ [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.
symfony - 拡張されたブロックのレンダリング -> 含まれるテンプレート
問題
次navbar.html.twig
のようなブロックがあります。
このナビゲーションバーはinclude
私のbase.html.twig
.
そして、私のページテンプレートextend
がベースです。
しかし、navbar に必要なものは、navbar に表示されません。これはinclude
、ベースのそばにあるため、そこに親子関係がないためです。
質問
拡張テンプレートに含まれるテンプレートのブロックをオーバーライドできるようにする良い (または任意の) 方法は何ですか?
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/*.sass
README の他の場所については何も表示されません。彼らは何を話している?
最後に、README の下部に次のように表示されます。
これは、ビルドステップで一度実行するようなものに思えます (「すべてのテンプレートをループする」)。しかし、Assetic はアセットのオンデマンド フィルタリング (およびキャッシュ) もサポートすると思いました。すべてのリクエストですべてのテンプレートをループしたくないことは明らかです。関連する呼び出しはwriteManagerAssets
、Twig 拡張機能によって自動的にトリガーされるべきではありませんか?
どんな助けでも大歓迎です。
php - symfony2. 表現でトランスチョイスを使用するのが暑い
symfonyで次のようなことをしようとしています
ofc は単なる例です - どうすれば表現をトランスチョイスに入れることができますか?
php - 小枝: url_decode
小枝フィルター url_encode で url パラメーターをエンコードしました。
URLに出力する
したがって、URLパラメーターを含む要求されたページで
01%2F04%2F2016 と表示されますが、01/04/2016 が必要です
生フィルターを使用してみましたが、小枝拡張も行いました:
しかし、これでも 01%2F04%2F2016 を表示し続けます
コントローラーメソッドで同じ結果が得られます:
これを行う適切な方法は何ですか?
アップデート :
日付は「テキスト」タイプの入力からのものです。いいえ、これは数字と / を含む単純な文字列です。
symfony - Generator で Twig フィルタを使用できない
カスタムフィルターを呼び出すと、次のように失敗します。
サービスが登録されています:
それは下にリストされていますcontainer:debug
クラスは次のようになります。
私のフィルターもtwig:debug
リストアップしてください。snake_case
twig ファイルは、symfony コマンドによって呼び出されるジェネレーターによってレンダリングされます。
そして、ここでフィルターの呼び出し
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 Extension
、AppShopService
そのメソッドuserHasPurchases
は機能しなくなりました。問題は、 のコンストラクターが を返すようになったため、もうAppShopService
設定されていないことです。user
$tokenStorage->getToken()
null
これはどのように可能ですか?を含む以外は何も変更していませんTwig Extension
。Twig Extension
すべてからを削除するとすぐに、services.yml
再び正しく機能します。
私の唯一の推測は、Twig Extension
セキュリティの前に作成が行われるということです。しかし、なぜ?
ここで何が間違っているのでしょうか?
php - Twig 拡張機能により、存在しないキャッシュ ファイルを読み込もうとしているようです
私は silex ベースのサイト用にこの twig 拡張機能を持っています:
次のようにアプリケーションファイルに登録されています。
これは正しいようです-拡張クラス名にスペルミスを導入すると、私が立ち往生しているものとは異なる例外が発生します。
私は小枝テンプレートでこの拡張機能を で呼び出します{{ maybeDecodeJapanese() }}
。これにより、この例外が発生します (テンプレート呼び出し自体が原因ではないようです。スペルミスにより、標準関数が見つからないという例外が生成されます)。
これは /silex/vendor/twig/twig/lib/Twig/Environment.php で発生します
私の最善の推測では、これはある種のキャッシュ ファイルです。開発環境ではキャッシュが無効になっていますが、とにかくキャッシュフォルダーの内容を削除しようとしましたが、役に立ちませんでした。グーグルはまだ他のリードを提供していません。
問題の原因を特定するためのヘルプは非常に役立ちます。
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_format
does not exist inEduAccountBundle:Ledger:showLedgers.html.twig
php - Symfony2 と Twig: TWIG で使用する PHP 関数を挿入する方法と場所は?
テンプレート TWIG 内で PHP 関数を呼び出す必要があります。その関数を挿入する方法と場所は? ここに私の例: 私のコントローラーは:
私のTwigテンプレートは次のとおりです。
しかし、次のエラー メッセージが表示されます。
名前空間「BackendBundle\Controller」からクラス「Twig_Environment」をロードしようとしました。別の名前空間の「use」ステートメントを忘れましたか?
何が欠けている?
symfony - サンドボックス セキュリティ ポリシーを使用して、twig テンプレートでトランスでフィルター処理されたテキストをレンダリングできない
私は少し混乱しています。まず、私のコードを見てください。
これが私がレンダリングしたいテンプレートです
ここでは、ご覧のとおり、型に従ってテンプレートをレンダリングしたいと考えています。問題は、テンプレートの半分が正常にレンダリングされ、翻訳された文字列をレンダリングしようとするとエラーがスローされることです。
render メソッドを呼び出そうとする直前に、この関数が存在するかどうかを確認しましたが、実際には未定義でした。基本的に、ここに 2 つの質問があります。
質問 1 プロジェクトの他の部分ではどのように機能しますが、この特定のハンドラーでは機能しませんか? 以下の「重要な更新」を参照してください。
質問 2 別の方法で問題を解決できますか? たとえば、サンドボックスを使用せずに、または何らかのフラグ「everythingAllowed=true」を指定してサンドボックスを使用しますか?
注意!重要な更新 以前、私は自分の質問を誤解していました。変数のレンダリング中にエラーがスローされたと思いましたが、状況を再確認しました (Alain Tiemblo がコメントで小枝テンプレート コードをここに要求したとき)。また、プロジェクト全体に翻訳があり、問題なく動作しますが、この特定の状況ではそうではありません。サンドボックスを使用せずにテンプレートをレンダリングしようとしたことも言及する価値があると思います。このようにTwig Engineから直接レンダリングしようとしました
結果 - 適切に翻訳されていないテキスト。「ロケール」をダンプすると、特定の言語が得られましたが、テキストは別の言語に翻訳されました。しかし、少なくともこの方法を使用すると、エラーは発生しませんでした..誰かが私のためにこれを明確にすることができますか? Intl/i18n 拡張機能がどのように機能するのか、なぜそれが Sandbox で機能したくないのか、または Sanbox で機能したくないのかを本当に理解していないためですか?
PS私の推測では、Twig Engineから直接動作しないのはなぜですか?おそらく「@templating」のように注入する必要はありません。または、正しく注入されますが、IntlまたはI18n拡張機能が有効になっていませんか? 有効にする方法。Sandbox で動作しない理由がわかりません