の経路に依存して動作しない提出:このページでは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
で私のホームページにアクセスすることができます。
とにかく、これは解決策でも解決策でもありません。私はそれをそのまま残し、より良い解決策を待っています。
フォームの検証に失敗しています。これはおそらくpublicActionの '/ something'で動作します。そのアクションは 'indexAction'のような有効な(?)フォームをチェックしていないからです。そのフォームで保持するエンティティの制約をチェックします。また、フォームタイプとエンティティクラスを投稿すると、ここでよりうまくデバッグできます。これはあなたのルーティングに起因するとは思わない。 –
しかし、なぜフォームアクションattrで渡している "sign_up"パラメータが得られないのですか?通常、制約が失敗すると、私はまだフォームアクションで渡すパラメータでリダイレクトされます。 –