2017-02-17 8 views
0

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を設定する必要があります。

調査したところ、これは可能ではないと思います。これは不可能なのは本当ですか?それとも私が気付いていない方法がありますか?

答えて

0

はあなたの小枝ファイルに次を試すことができます:

{{ url(item.url,{'id': id}) }} 

私はそれが動作するはずと信じていますが、確かではありません。

あなたはこのようなものを使用する場合は何

EDIT#2

:。$idはあなたが合格する必要がIDです

$app->match('/item', 'Controller::method($id)')->bind('named_url'); 

を私はサイレックスと本当に慣れていないんだけど、多分それはそれのようなものですか?

+0

ここでも同じです。私は小枝ファイルを編集することはできません。 PHP配列だけを編集できます。 – ABeard89

+0

私の編集#2の変更を参照してください。 –

+0

それは確かに面白いです。私はここの箱の外で思考が好きです。ルートから 'id'を削除すると、TWIGはURLを解決することができますが、ルート内の変数の柔軟性が失われます。 これは単に '/ item'の単一のURLが一致することを許可し、'/item/3'のような他のURLはもはやマッチしません。 シレックスはそのようなURLをコントローラメソッドに接続することはできません。 – ABeard89

0

あなたは、ルータのファイルである必要があります。この

{{ path('path_in_route', {'id': article.id,'slug': article.slug}) }}

そして path_in_route ようみとめVARSを使用することができます。

希望はあなたを助けます。

+0

私は簡単にtwigファイルを編集することでそれを行うことはできますが、できません。 PHP配列だけを編集できます。 – ABeard89

関連する問題