2017-01-18 4 views
0

私は以前これを検索しましたが、唯一の答えは、パラメータがクエリ文字列として渡されたときです。symfonyはパスを渡すurl slugにリダイレクトします

Symfony 3 CRMには、app_litterのページがあります。中

/リットル/ 1

マイルートdefinitonを次のように表示するにはどのごみデータを決定するために、ルートに渡される必要があるlitter_idと呼ばれ、必要なURLスラグがあり、ルーティングファイルは次のとおりです。ユーザーはこのページの外側の形がある彼らのゴミに子犬を追加することができる機能があり

app_view_litter: 
    path: /litter/{id} 
    defaults: { _controller: AppBundle:Litter:view, id: null } 
    requirements: 
     id: \d+ 

- 子犬が正常に保存された後、私は戻ってにユーザーをリダイレクトしますリットルi私はこれをしました:

return $this->redirectToRoute('app_litter', array('litter_id' => $litter->getId())); 

ここで、$litterはSymfonyから取得したオブジェクトです。しかし、これはにリダイレクト:?

/リットルlitter_id =それはスラグを期待して、動作しない1

redirectToRoute()(または他の方法)を使用して、クエリ文字列ではなくスラッグでルートをレンダリングすることはできますか?

+0

は、あなたのルート定義を表示します。 –

+0

@BorisGuéryが質問に追加しました。 –

答えて

1

間違ったルートを使用している可能性がありますか?代わりにapp_litterapp_view_litterを使用してみてください:

return $this->redirectToRoute('app_view_litter', array('id' => $litter->getId())); 
+0

いいえ、経路は間違っていません。これは個々のページであり、すべてのリターのリストではありません。 –

+0

Borisは、 'id'をパラメータとして使用してルート定義を調べると、ルート名は' app_view_litter'であると指摘しました。私は答えを更新します。 – lordrhodos

+0

これはまだ動作しません。私が遭遇しようとしているのは、URLにスラッグではなく、クエリ文字列として返す点です。 –

3

あなたのルート定義があるので:

app_view_litter: 
    path: /litter/{id} 
    defaults: { _controller: AppBundle:Litter:view, id: null } 
    requirements: 
     id: \d+ 

あなたがあるあなたのプレースホルダの名前に対応したキーに関連付けられたアレイを提供する必要があるルート・ジェネレータを使用してあなたの場合はidです。

したがって、それがなければなりません:

$this->redirectToRoute('app_litter', array('id' => $litter->getId()));

あなたはスラグを使用したい場合は、そこに数字だけ(\d+)で構成さではない何か、あなたは新しいルートを定義または変更するか持っています既存の。

app_view_litter_using_slug: 
    path: /litter/{slug} 
    defaults: { _controller: AppBundle:Litter:view, slug: null } 
    requirements: 
     id: .* 

そして、あなたのような何か:

$this->redirectToRoute('app_litter_using_slug', array('slug' => $litter->getSlug()));

+0

Hm ok私はそれを逃しました - しかし、たとえ私が 'litter?id = 1'を使用したとしても、idがnullだと思うので失敗します。エラーはメンバ関数getBlah()on nullに –

+0

あなたのパスがごみ箱/ 1であると思われる場合、なぜリター?id = 1を使用しますか? '/ litter?id = {id}'は '/ litter/{id}'とあなたの実際の必要条件をマッチさせないので、完全なアクションコード – OlivierC

+0

@MichaelEmersonを提供できますか? –

関連する問題