Как я могу иметь необязательные параметры в маршруте 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
Как мне заставить работать оба маршрута?
Ответы
Ответ 1
Попытайтесь перейти к site/user
(не замечайте обратную косую черту в конце).
Как правило, он должен работать, я имею относительно похожую конфигурацию.
Но если все остальное не удается, вы всегда можете определить несколько маршрутов для одного и того же действия, т.е.
/**
* Lists all User entities.
*
* @Route("/", name="user_no_cid")
* @Route("/{cid}", name="user")
* @Template()
*/
public function indexAction($cid=null)
{
Ответ 2
Используйте yml файл для конфигурации маршрутизации и добавьте значение по умолчанию для идентификатора в параметрах маршрутизации, например:
user:
pattern: /site/user/{id}
defaults: { _controller: YourBundle:Default:index, id: 1 }
Смотрите документацию здесь
Ответ 3
Вы также можете сделать это с помощью параметра GET, например
/**
* @param Request $request
*
* @return Response
*/
public function displayDetailAction(Request $request)
{
if ($courseId = $request->query->get('courseId')) {