Symfony (v 2.3.2) フォームに奇妙な問題があります。関係のないとてもシンプルな形です。このフォームは REST API でのみ使用されることにも注意してください。
だから私は公開されたフィールド(ブール値)を持っています。エンティティでは、デフォルトで false に設定されています。
更新時に、REST API クライアントは PUT 要求を送信しますが、これは正しい aka...&[entity]published=0&...
です。この値は、Symfony プロファイラーのフォーム パラメーターにも表示されます。
ただし、データベースの実際の値が true (または tinyint の場合は 1) に設定されていることに気付きました。
それで、何が問題なのかを調べるために、後に throw ステートメントを追加しました$form->submit($request);
throw new \Exception(sprintf('Request: %s, form: %s', $request->get('entity')['published'], $form->get('published')->getData()));
また
throw new \Exception(sprintf('Request: %s, form: %s', $request->get('entity')['published'], $form->getData()->getPublished()));
例外メッセージは次のとおりですRequest: 0, form: 1
。これは、submit メソッドのどこかで文字列値「0」が 1 に変換されることを意味します。
フィールドは$builder->add('published', 'checkbox', [ 'required' => false ])
また、関連している可能性のある奇妙なことに気付きました。Symfony プロファイラーのパネル リクエストで、エラーが発生しましたWarning: json_encode(): Invalid UTF-8 sequence in classes.php line 3758
: