Symfony2 - 根据页面路径,表单提交不起作用
Symfony2 - Form submit does not work depending on a route of page
所以我有这条路线:
/**
* @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)
{
我尝试将这条路线更改为其他路线,但它并没有解决我的问题。
有谁知道这个问题,为什么我的表单没有按照当前路径正确提交?
更新
所以我通过修改我的表单所在和引用的路径来解决这个问题。
/**
* @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
,我的表单将成功提交。
无论如何,这不是解决方案或答案,我保持原样,等待更好的解决方案。
最终问题出在登录表单上。我不得不修改每个区域的 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
所以我有这条路线:
/**
* @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)
{
我尝试将这条路线更改为其他路线,但它并没有解决我的问题。
有谁知道这个问题,为什么我的表单没有按照当前路径正确提交?
更新
所以我通过修改我的表单所在和引用的路径来解决这个问题。
/**
* @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
,我的表单将成功提交。
无论如何,这不是解决方案或答案,我保持原样,等待更好的解决方案。
最终问题出在登录表单上。我不得不修改每个区域的 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