web-dev-qa-db-ja.com

Symfony2ルートにオプションのパラメーターを設定するにはどうすればよいですか

私はこのコードを以下に持っています:

/**
 * Lists all User entities.
 *
 * @Route("/{cid}",defaults={"cid" = null},name="user")
 * @Template()
 */
public function indexAction($cid=null)
{}

site/user/1と入力すると動作しますが、site/user/と入力すると次のようになります。

No route found

両方のルートが機能するようにするにはどうすればよいですか?

46
user825904

site/user(最後にバックスラッシュがないことに注意してください)。

一般的には動作するはずですが、比較的似た構成が動作しています。

しかし、他のすべてが失敗した場合、同じアクションに対して複数のルートを常に定義できます。

/**
 * Lists all User entities.
 *
 * @Route("/", name="user_no_cid")
 * @Route("/{cid}", name="user")
 * @Template()
 */
public function indexAction($cid=null)
{
71
Inoryy

ルーティング構成にymlファイルを使用し、次のようにルーティングパラメーターにidのデフォルト値を追加します。

user:
  pattern:   /site/user/{id}
  defaults:  { _controller: YourBundle:Default:index, id: 1 }

ドキュメントを参照してください こちら

36
fkoessler

GETパラメーターを使用して行うこともできます。

/**
 * @param Request $request
 *
 * @return Response
 */
public function displayDetailAction(Request $request) : Response
{
    if ($courseId = $request->query->get('courseId')) {
5
crmpicco