2016-10-05 5 views
1

Так что у меня этот маршрут:Symfony2 - Форма представить не работает в зависимости от маршрута страницы

/** 
* @Route("/", name="homepage") 
* 
* @param Request $request 
* 
* @return Response 
*/ 
public function indexAction(Request $request) 
{ 
    // ... 

На этой странице является правильной формой, которая работала некоторое время назад.

{{ form_start(company_sign_up_form, {'action': path('homepage', { 'sign_up': 'company' }) }) }} 

Здесь sign_up это параметр, который я прохожу через URL.

Пример: http://localhost/?sign_up=company

Когда я вношу форму я перенаправлены на страницу без этого параметра sign_up и оба $form->isSubmitted() и $form->isValid() дают мне false.

Но когда я меняю маршрут от @Route("/", name="homepage") до @Route("/something", name="homepage"), работа выполняется очень хорошо.

Единственный аналогичный маршрут, который мог бы конфликт является динамичным:

/** 
* @Route("/{page}", name="public", requirements={"page": "about|programs|contacts"}) 
* 
* @param Request $request 
* @param $page 
* 
* @return Response 
*/ 
public function publicAction(Request $request, $page) 
{ 

Я попытался изменить этот маршрут к другому, но это не решает мою проблему.

Кто-нибудь знает о проблеме, почему моя форма не соответствует правильному маршруту?

UPDATE

Так что я преодолел проблему, изменив маршрут моя форма в и относится.

/** 
* @Route("/{page}", name="homepage", defaults={"page": ""}, requirements={"page": "|home"}) 
* 
* @param Request $request 
* 
* @return Response 
*/ 
public function indexAction(Request $request) 
{ 

Так что в этом случае я могу получить доступ к домашней странице по http://localhost/ и http://localhost/home так, если я изложу действие формы для /home, моя форма успешно отправлен.

В любом случае, это не решение или ответ, я оставляю его как есть и жду лучшего решения.

+0

ваша форма проверки не работает. Вероятно, это работает в publicAction с '/ something', потому что это действие не проверяет действительную (?) Форму типа 'indexAction'. Проверьте ограничения на сущность, которую вы сохраняете в этой форме. Также, если вы публикуете свой тип формы и свой класс сущностей, здесь он может быть лучше отлажен. Я не думаю, что это связано с вашей маршрутизацией. –

+0

Но почему я не получаю параметр «sign_up», который передаю с помощью формы action attr? Обычно, когда ограничение терпит неудачу, я все равно перенаправляюсь с параметром I, переданным с действием формы. –

ответ

0

В конце концов проблема была вызвана формой входа. Мне пришлось изменить check_path каждой области, логика входа не будет выполняться на той же странице, что и другие формы.

main: 
    pattern: ^
    anonymous: ~ 
    provider: main 
    context: primary_auth 
    form_login: 
     login_path:   /
     check_path:    /login_check 
     default_target_path: /authorization 
    logout: 
     path: /logout 
     target: homepage 
    remember_me: 
     secret: '%secret%' 
     lifetime: 31536000 
Смежные вопросы