2014-09-10 2 views
0

Возможно ли иметь один и тот же маршрут маршрута, но для двух разных действий. Я хочу использовать действие, когда пользователь вошел в систему, а другой, когда пользователь не вошел в систему.Symfony2: тот же маршрут маршрута для 2 действий

/** 
* @Route("/", name="bundle_index") 
* @Template("NameBundle:Default:index.html.twig") 
*/ 

/** 
* @Route("/", name="bundle_index_auth") 
* @Security("has_role('ROLE_USER')") 
* @Template("NameBundle:Default:auth.html.twig") 
*/ 
+0

Я так не думаю; symfony будет запускать первое действие маршрута всегда. Я бы рекомендовал использовать переменную в вашем маршруте, например '* @Route ("/{isset_var} ", name =" bundle_index ")' и обрабатывать ее с помощью действия, чтобы, если оно не установлено, сначала делайте что-то в другом месте; или даже установить путь к ANONYMOUS пользователю в разделе управления доступом, а затем в вашем дескрипторе действия, если пользователь не прошел проверку подлинности, делает первые вещи иначе, чем другие вещи. – Javad

ответ

0

Используйте тот же путь с разными именами, я думаю, что нет, и я не могу себе представить, в каких случаях это может быть полезно, даже если мы сможем это сделать (может быть, если вы лучше объясните, чего вы хотите достичь), но, глядя на ваш пример, вы можете выполнить все проверки, необходимые в рамках одного и того же действия ... проверка того, предоставлен ли ROLE_USER пользователь (иначе перенаправить пользователя или выбросить исключение доступа с тем же поведением вашего примера) и, соответственно, сделать правильный шаблон (очевидно, при любых других манипуляциях).

+0

Это то, что я сейчас делаю, имея действие и проверку, если пользователь вошел в систему затем перенаправляет его на правильное действие. Но я чувствую, что добавляет мусор в URL-адресе для пользователя. Я хотел бы, чтобы пользователь увидел только http: // www.mywebsite.com/'независимо от того, вошел ли он в систему или нет, но когда он вошел в систему, он не видит одну и ту же страницу. Во всяком случае, как я уже сказал, я уже реализовал решение, но мне все еще интересно. –

+0

Но действие, в котором вы проверяете пользователя, откуда оно взялось? Надеюсь, это не выход из действия входа, не так ли? В противном случае вы можете использовать один и тот же путь, используя различные http-методы, например, для CRUD-операций (GET для доступа и POST для проверки учетных данных). Вначале это выглядит очень похоже на действие «помнить меня» ... (очевидно, это уже реализовано в Symfony). Вы думали о «слушателе» или «событии»? –

Смежные вопросы