Symfony2 - 表单提交不起作用取决于页面路由

时间:2016-10-05 09:40:45

标签: forms symfony routing submit form-submit

所以我有这条路线:

/**
 * @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是我通过网址传递的参数。

示例: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)
{

我尝试将此路线更改为不同的路线,但这并不能解决我的问题。

有没有人知道这个问题,为什么我的表单没有正确提交当前路线?

更新

所以我通过修改我的表格所在的路线来克服这个问题。

/**
 * @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,我的表单就会成功提交。

无论如何,这不是解决方案或答案,我保持原样并等待更好的解决方案。

1 个答案:

答案 0 :(得分: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