web-dev-qa-db-ja.com

POSTグローバル変数PHP Symfony 4で取得するには?

Symfony 4のPOSTグローバル変数の結果を取得するのに非常に奇妙な問題があります。

私はこの方法を試しました:

$date = $request->request->get('date');

これは、カレンダー入力の日付が変更されたときにAJAXリクエストを実際に送信する方法です。

onSelect: function(date, instance) {
    $.ajax({
      url : 'home',
      type : 'POST',
      data : {'date':date},
      dataType : 'html',
      success : function(code_html, statut){
        console.log(statut);
      },

      error : function(resultat, statut, erreur){

      },

      complete : function(resultat, statut){

      }          
    });

OnSelectコールバックは、必要な日付値を正常に受け取ります。

そして、この結果は、日付変数の正しい値を持つ200成功コードを示しています。

profiler screenshot

しかし、$ dateはnullです。

4

あなたが直面する可能性のある問題は、PHP=が変数を投稿の本文から$ _POSTに変換するために使用し、Symfonyが$ _POSTを使用してリクエストオブジェクトデータに入力するAccept HTMLヘッダーに関連しています。

この動作を実現するには、ヘッダーapplication/x-www-form-urlencodedまたはmultipart/form-dataを使用する必要があります。

実際にそうなっているかどうかを確認するには、コードを使用する必要があります。

dump($request->getContent());

変数でいっぱいの場合、PHPはMIMEの不一致のために$ _POSTに変換しません。そうでない場合、リクエストが正しくないことを意味します。

Post変数にアクセスする通常のアプローチは次のとおりです。

public function index(Request $request) 
{
    dump($request->getContent()); // get raw body of http request 
    dump($request->request->get('date')); //get converted variable date by php and then by symfony
}

チェックに役立つリンク:

0
Robert