TWIGテンプレートを持つSilexアプリケーションを使用するフレームワーク(特に興味のある場合はEC-Cube3)を使用しています。TWIGに1つのパラメータを2つ渡すurl
PHPオブジェクト配列で設定されたナビゲーションサイドバーがあります。
$item = array(
"id" => "item_id"
"url" => "named_url"
);
URLは、典型的なサイレックス形式で作成されます:
$app->match('/item', 'Controller::method')->bind('named_url');
フレームワークは、最終的にurl
フィールドを使用していますので、同じようTWIGでそれを評価します。私はこのようになりますアイテム配列を挿入することができます
{{ url(item.url) }}
そして、これは、通常は大丈夫です!このシナリオでは
$app->match('/item/{id}', 'Controller::method')->bind('named_url'); // Needs 'id' to be evaluated.
TWIGのurl
関数は第二引数のためid
を必要とするため、同じ配列でURLを設定すると動作しません。しかし、問題は、私は、このようなパラメータを含んでいるURLを持っていたときに来て。
アプリケーションのTWIGファイルを変更できないため(アプリケーションを安全に更新できないため)、id
を含むようにアイテムのurl
を設定する必要があります。
調査したところ、これは可能ではないと思います。これは不可能なのは本当ですか?それとも私が気付いていない方法がありますか?
ここでも同じです。私は小枝ファイルを編集することはできません。 PHP配列だけを編集できます。 – ABeard89
私の編集#2の変更を参照してください。 –
それは確かに面白いです。私はここの箱の外で思考が好きです。ルートから 'id'を削除すると、TWIGはURLを解決することができますが、ルート内の変数の柔軟性が失われます。 これは単に '/ item'の単一のURLが一致することを許可し、'/item/3'のような他のURLはもはやマッチしません。 シレックスはそのようなURLをコントローラメソッドに接続することはできません。 – ABeard89