なぜSymfonyのフォームがAjaxを通じて正しく送信された後に「送信されていない」の理由はなぜですか? -- ajax フィールド と forms フィールド と symfony フィールド と fosuserbundle フィールド 関連 問題

Why the Symfony form is “not submitted” after data is correctly sent through AJAX?












1
vote

問題

日本語

私はAjax(angularjs)を通してsymfonyフォームを送りたいです。

しかし、データが明確に送信されたとしても、symfonyが「送信されていない」と言われている(実際にはエラーはありませんが、 isSubmitted false )

これは fosuserbundle登録形式のテストです。

編集:写真は小さいように見えますが、それらは完全なサイズで表示されていれば完全に読みやすくなるように十分に解決されています。

HTTPフォームから標準送信を使用した場合のログです。

symfony logs  -  httpフォーム送信

ajaxの投稿

を使用したときのログです。

symfony logs  -  Ajaxの送信

  • 私は無効になっていますCSRFトークン
  • Ajaxから使用する方法は "POST"であるため、デフォルトのsymfonyが期待される既定のSymfony(fosuserbundleがそのデフォルトのafaikをオーバーライドしない)以来、OKになります。
  • その他の形式(Fosuserbundle範囲外)は、Ajax
  • で正しく送信されています

あなたは問題について何か考えがありますか?どんなポインタですか?それとも私がチェックすることができる他の任意のログ?

編集:

デフォルトのFosuserBundle Registrance Controller 。< / P>

ほぼデフォルトのFosuserbundle登録フォームしかし、私は開発においてさらにそれを必要とする私がそれを必要とする(現在)空の子フォームを追加しました。

<事前> <コード> namespace NONGSecurityBundleForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormFormBuilderInterface; class UserRegistrationType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) {} public function getParent() { return 'fos_user_registration'; } public function getName() { return 'nong_user_registration'; } }

HTMLフォーム(NB。着色が正しいままになるように星の前にドットを追加した):

<事前> <コード> POST /server/web/testfosuser/register/ HTTP/1.1 Host: mywebsite.com Connection: keep-alive Content-Length: 229 Cache-Control: max-age=0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/.*;q=0.8 Origin: http://mywebsite.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36 Content-Type: application/x-www-form-urlencoded Referer: http://mywebsite.com/server/web/testfosuser/register/ Accept-Encoding: gzip, deflate Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4 Cookie: PHPSESSID=xxxxxxxxxxxxxxxxxxxxxxxxx fos_user_registration_form%5Bemail%5D=bidon%40bidon.com& fos_user_registration_form%5Busername%5D=bidon& fos_user_registration_form%5BplainPassword%5D%5Bfirst%5D=bidon& fos_user_registration_form%5BplainPassword%5D%5Bsecond%5D=bidon

ajax要求を使用して送信されたヘッダー:( NB。着色が正しいままで維持するように星の前にドットを追加しました):

<事前> <コード> POST /server/web/testfosuser/register HTTP/1.1 Host: mywebsite.com Connection: keep-alive Content-Length: 229 Accept: application/json, text/plain, */.* Origin: http://mywebsite.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36 Content-Type: application/json;charset=UTF-8 application/x-www-form-urlencoded; charset=UTF-8 Referer: http://mywebsite.com/client/ Accept-Encoding: gzip, deflate Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4 Cookie: PHPSESSID=xxxxxxxxxxxxxxxxxxxxxxxxx fos_user_registration_form%5Bemail%5D=bidonqdsfqsdf%40qsdf& fos_user_registration_form%5Busername%5D=charles222& fos_user_registration_form%5BplainPassword%5D%5Bfirst%5D=bidon& fos_user_registration_form%5BplainPassword%5D%5Bsecond%5D=bidon

英語

I want to sent a Symfony form through AJAX (AngularJS).

However, even if data is clearly sent, the form is said by Symfony to be "not submitted" (no error actually, but some debug show that isSubmitted returns false)

Here is a test on FOSUserBundle registration form.

EDIT: although pictures appear small, they are sufficiently resolved so that they are perfectly readable if displayed at their full size.

Here are the logs when I use a standard submission from an HTTP form:

Symfony logs - HTTP form submission

Here are the logs when I use AJAX submission:

Symfony logs - AJAX submission

  • I have disabled CSRF token
  • The method I use from AJAX is "post" so it should be ok since it is the default Symfony expects (and FOSUserBundle does not override that default AFAIK).
  • Other forms (outside of FOSUserBundle scope) are correctly sent with AJAX

Would you have any idea on the matter? Any pointer? Or any other log I could check?

EDIT:

I use the default FOSUserBundle registration controller.

I almost use the default FOSUserBundle registration form, but I have added a (currently) empty child form which I'll need it further in the development.

namespace NONGSecurityBundleForm; use SymfonyComponentFormAbstractType; use SymfonyComponentFormFormBuilderInterface;  class UserRegistrationType extends AbstractType {     public function buildForm(FormBuilderInterface $builder, array $options) {}      public function getParent() {         return 'fos_user_registration';     }      public function getName() {         return 'nong_user_registration';     } } 

Headers and data sent with the HTML form (NB. added a dot before star in Accept so that the coloration stays correct):

POST /server/web/testfosuser/register/ HTTP/1.1 Host: mywebsite.com Connection: keep-alive Content-Length: 229 Cache-Control: max-age=0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/.*;q=0.8 Origin: http://mywebsite.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36         (KHTML, like Gecko) Chrome/40.0.2214.111             Safari/537.36 Content-Type: application/x-www-form-urlencoded Referer: http://mywebsite.com/server/web/testfosuser/register/ Accept-Encoding: gzip, deflate Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4 Cookie: PHPSESSID=xxxxxxxxxxxxxxxxxxxxxxxxx   fos_user_registration_form%5Bemail%5D=bidon%40bidon.com& fos_user_registration_form%5Busername%5D=bidon& fos_user_registration_form%5BplainPassword%5D%5Bfirst%5D=bidon& fos_user_registration_form%5BplainPassword%5D%5Bsecond%5D=bidon 

Headers sent with the AJAX request: (NB. added a dot before star in Accept so that the coloration stays correct):

POST /server/web/testfosuser/register HTTP/1.1 Host: mywebsite.com Connection: keep-alive Content-Length: 229 Accept: application/json, text/plain, */.* Origin: http://mywebsite.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36 Content-Type: application/json;charset=UTF-8 application/x-www-form-urlencoded; charset=UTF-8 Referer: http://mywebsite.com/client/ Accept-Encoding: gzip, deflate Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4 Cookie: PHPSESSID=xxxxxxxxxxxxxxxxxxxxxxxxx  fos_user_registration_form%5Bemail%5D=bidonqdsfqsdf%40qsdf& fos_user_registration_form%5Busername%5D=charles222& fos_user_registration_form%5BplainPassword%5D%5Bfirst%5D=bidon& fos_user_registration_form%5BplainPassword%5D%5Bsecond%5D=bidon 
</div
           
   
   

回答リスト

1
 
vote

私は同様の問題を有し、私はコントローラの内部を変更しました:

<事前> <コード> $user = new User(); $form = $this->createForm( new UserRegistrationType(), $user, array( 'attr' => array('novalidate' => 'novalidate'), 'action' => $this->generateUrl('user_registration') ) );

HTML5エラーの吹き出しとアクションURLを直接処理してください。これが機能していない場合は、JSコードを表示してください。

 

I had similar problems and i changed the following inside of the controller:

$user    = new User(); $form    = $this->createForm(     new UserRegistrationType(),     $user,     array(         'attr' => array('novalidate' => 'novalidate'),         'action' => $this->generateUrl('user_registration')     )  ); 

Turning of the html5 error bubbles and setting the action URL directly worked for me. If this is not working, show your JS code.

</div
 
 
   
   
1
 
vote
vote
ベストアンサー
 

私は最後に修正を見つけることができました:

正しいURLは、ajax要求を行ったときに忘れた最後の / ...../register/ です。

しかし、私はここでの賭け金のメカニズムが何であるかわからない。私は(間違ったURLを使用するとき)デバッグを行くことができました(間違ったURLを使用するとき) HttpFoundationRequestHandler には、 $request->getMethod() の呼び出しが(POSTの代わりに)返却されたことがあります。 / P>

 

I finally managed to find the correction:

The correct URL is ...../register/ with a final / that I forgot when I did the AJAX request.

However, I'm not sure what are the mechanisms at stake here. The deepest I could go debuging (when using the wrong URL) was in HttpFoundationRequestHandler, where the $request->getMethod() call returned GET (instead of POST), thus not submitting the form.

</div
 
 
 
 

関連する質問

4  fosuserbundle / symfony2:ユーザーのログアウトをユーザーに与えられているユーザー(現在ログインしていません)  ( Fosuserbundle symfony2 force logout of a user given a user not the currently l ) 
ユーザーの役割を編集するたびに、ユーザーはログアウトしてログインして変更を確認する必要があります。ユーザーを宣伝するときに問題はありません。ただし、降合が発生した場合、ユーザーはセキュリティリスクを課す既存の役割を維持します。不正な従業員に管理者ユーザーを取り...

14  FosuserBundle No Encoderが設定されています。新しいユーザーの作成  ( Fosuserbundle no encoder has been configured creating a new user ) 
FosuserBundle(symfony2)で新しいユーザーを作成したいのですが、常に同じメッセージを取得します(<コード> php app/console fos:user:create を使用しています)。 エンコーダはアカウント "MyProjec...

14  symfony2アプリケーションの展開FosuserBundleエラーを取得します  ( Deploying symfony2 app getting fosuserbundle errors ) 
私は同じ仕様の他のコンピュータにSymfonyプロジェクトをインストールしました、そして私はフォスサーサーバンドルでログインしたときに次のエラーを受け取りました: <コード> Authentication request could not be proce...

-1  Symfony2ログインが機能していませんFosuserBundle  ( Symfony2 login not working fosuserbundle ) 
ヘルプ!私は理由がわからないが、最近私はもはや私のSymfony2のウェブサイトにログインすることはできません。ログインしようとすると、エラーなしでログインページにリダイレクトされ、何が悪いのかを示しません。私は私のAPCキャッシュ、私のProdおよびDevキ...

4  ユーザーの種類SonataUserBundle + FosuserBundle + SonataAdminBundle  ( Type of users sonatauserbundle fosuserbundle sonataadminbundle ) 
私のプロジェクトで3人のユーザーを作成しようとしています: cliente :フロントエンドにアクセスし、フィールド 'name'、 'cpf'、 'アドレス'を持っています。 vandedor :サイトにオファーを登録し、フィールド 'Phone'...

3  symfony 2.1 Fosuserbundle 'クラス' fos userbundle fosuserbundle 'の設定/ appkernel.phpで見つかりません  ( Symfony 2 1 configuration of fosuserbundle class fos userbundle fosuserbundle ) 
WindowsでSymfonyを使用していて、公式文書 php app/console doctrine:schema:update --force を実行すると、このメッセージが表示されます。 <事前> <コード> Class 'FOSUserBun...

8  Symfony 3.2 "Security.FireWall.Map.Context.main"は、存在しないサービスに依存しています^マイ認証ハンドラ^  ( Symfony 3 2 security firewall map context main has a dependency on a non exist ) 
私の個人的なsymfony 3.2プロジェクト(href="https://githubs.com/pc-magas/photoalbum" rel="noreferrer"> https://github.com/pc-magas/photoalbum) h...

3  symfony2 / fosuserbundle - ログイン前に前のルートを入手  ( Symfony2 fosuserbundle get the previous route before login ) 
電子商取引アプリを作成しています。を使ったカスタムリダイレクトを構築しています。 私のユーザーが彼の買い物のカートにいると言ってみましょう、そして彼は記録されません。彼は購入プロセスを続けるために彼のカートを検証します。この状況では、My Appはユーザーをロ...

2  Fosuserbundle登録用紙をオーバーライドします  ( Overriding fosuserbundle registration form ) 
私はFosuserbunldeを使っています。このチュートリアルを使用して登録フォームを上に上げました。 https://github.com/friendsofsymfony/fosuserbundle/blob/master. /reResources/...

0  FOSユーザーバンドルSymfony 2.8.4からユーザーを自動的にログアウトします  ( Automaticly logout user from fos user bundle symfony 2 8 4 ) 
X時間後にユーザーを自動的にログアウトユーザーにどのようにしていますか? 今のところ彼のコンピュータに2日後に戻ってきて、アプリはまだログインページを迂回し、彼に承認を与える ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有