私は Symfony 2.1.3-DEV を使用しており、エンティティを文字列 (何らかの ID) に変換し、フォームが送信されたときに文字列からエンティティに戻そうとしています。クックブックで指定されたトランスフォーマーを使用している場合、問題は同じです: http://symfony.com/doc/master/cookbook/form/data_transformers.html
コントローラーコード:
$task = $entityManager->find('AcmeTaskBundle:Task', $id);
$form = $this->createForm(new TaskType(), $task); // so $task->issue is Issue object
次のエラーが表示されます。
フォームのビュー データはクラス Acme\TaskBundle\Entity\Issue のインスタンスであると予想されますが、(n) 文字列です。このエラーを回避するには、「data_class」オプションを null に設定するか、(n) 文字列を Acme\TaskBundle\Entity\Issue のインスタンスに変換するビュー トランスフォーマーを追加します。
問題は、文字列に変換するトランスフォーマーを既に持っていることです。
からForm.php
:
if (null !== $dataClass && !$viewData instanceof $dataClass) {
throw new FormException(
//...
);
}
パラメーター$viewData
のインスタンス (または特定のオブジェクトの推測された型) であるとチェックされるのはなぜですか? data_class
ビューデータは文字列/配列などであるはずではありませんか? 何か不足していますか?