2016-10-05 7 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) 
{ 

したがって、この場合には、私は/homeにフォームのアクションを設定した場合、私のフォームが正常に送信されるので、http://localhost/http://localhost/homeで私のホームページにアクセスすることができます。

とにかく、これは解決策でも解決策でもありません。私はそれをそのまま残し、より良い解決策を待っています。

+0

フォームの検証に失敗しています。これはおそらくpublicActionの '/ something'で動作します。そのアクションは 'indexAction'のような有効な(?)フォームをチェックしていないからです。そのフォームで保持するエンティティの制約をチェックします。また、フォームタイプとエンティティクラスを投稿すると、ここでよりうまくデバッグできます。これはあなたのルーティングに起因するとは思わない。 –

+0

しかし、なぜフォームアクションattrで渡している "sign_up"パラメータが得られないのですか?通常、制約が失敗すると、私はまだフォームアクションで渡すパラメータでリダイレクトされます。 –

答えて

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 
関連する問題