2017-12-26 15 views
0

私はsymfony3でmysqlデータベースにデータを投稿する関数を持っています。私は、文字列のポスト要求作品で変数($ピース、$タイプ、$たstartDate、endDateに$)を交換するときSymfony 3で投稿をリクエストしていますか?

/** 
* @Route("/LegoPieces") 
* @METHOD("POST") 
* @View() 
* 
* @Annotations\QueryParam(
* name="piece", nullable=false, description="piece" 
*) 
* @Annotations\QueryParam(
* name="type", nullable=false, description="type" 
*) 
* @Annotations\QueryParam(
* name="startDate", nullable=false, description="Start Date YYYY-MM-DD HH:MM:SS (Should be in the future)" 
*) 
* @Annotations\QueryParam(
* name="endDate", nullable=false, description="End Date YYYY-MM-DD HH:MM:SS (Should be no more than 3 weeks in the future)" 
*) 
*/ 
public function postAction(ParamFetcherInterface $paramFetcher) 
{ 
    $piece = $paramFetcher->get('piece'); 
    $type = $paramFetcher->get('type'); 
    $start = $paramFetcher->get('startDate'); 
    $end = $paramFetcher->get('endDate'); 
    $startDate = DateTime::createFromFormat('Y-m-d H:i:s', $start); 
    $endDate = DateTime::createFromFormat(' Y-m-d H:i:s', $end); 
    $em = $this->getDoctrine()->getManager('default'); 
    $data = new LegoPieces(); 
    $data->setPiece($piece); 
    $data->setType($type); 
    $data->setStartDate($startDate); 
    $data->setEndDate($endDate); 
    $em->persist($data); 
    $em->flush(); 

    return new JsonResponse("LegoPieces Added Successfully", 200); 
} 

:関数は次のようになります。しかし、私が郵便配達員やjavascriptのようなもので投稿リクエストをしようとすると、次のようになります:

fetch("http://localhost:8000/LegoPieces", { 
    method: "POST", 
    body: { 
     startDate: this.startDate, 
     endDate: this.endDate, 
     piece: this.piece, 
     type: this.type 
    } 
    }).then(response => response.json()) 
); 
}); 

私は500エラーが発生します!私は理解していません - 助けてくれてありがとう!

+0

あなたはsymfonyのプロファイラの結果を確認しましたか? – LugiHaue

答えて

2

あなたのエラーは何ですか?

しかし、コントローラを改善する必要があります。あなたはSymfony Formを使用しておらず、あなたは検証をしていません。あなたのエンティティタイプを尊重しないと、あなたは今、500のエラーがなくても、将来的にはいくつかのエラーが発生します。

投稿リクエストを使用する理由と、あなたの身体のすべてのパラメータを渡さない理由もわかりません。あなたはURLでgetパラメータのみを使用します。

+0

私は元々、JavaScriptで投稿要求を受け取りましたが、私はその投稿を編集しましたが、何も表示されませんでした。エラーは 'ブール値でメンバ関数の形式()を呼び出します - それは私が思うに、日付のパラメータを取得していないので、これを示しています! – Nespony

+0

@Nesponyはいフォームコンポーネントを使用してエンティティの水分を管理し、それらを検証する必要があります。 これで、取得パラメータ、日付形式、作成について心配する必要はありません。検証後、エンティティをdbに永続化できると仮定できます(良いアサートで) – Mcsky

-1

500ということにするものを除い知らず - あなたは:(

何も知りませんが、その情報がなければ、応答本体

を参照してください - 私は、唯一のアイデアを持っている

をあなたはdevの上で作業ARW場合。 envionment、その後、youur JS要求は、単にルート(および他のもの)が表示されないことがあり

明確なキャッシュフォルダのすべての内容

rm -rf var/cache/*

php bin/console c:w -e prod

関連する問題