2017-11-26 6 views
-1

EntityTypeを使用してフォームを作成しようとしていますが、実行していません。クラスAppBundle Entity Userのオブジェクトを文字列に変換できませんでした。Symfony 3

これは私のBDである:

enter image description here

私はすでにユーザーとAcademiucProgramを得たので、私は、ユーザーとAcameicProgram間のレジスタを作成したいです。

私のコントローラからは、ユーザのIDを含む私のフォームに変数が提供されています。

マイコントローラ:

public function indexAction(Request $request,$id){ 
    $ac = new Usersacademi(); 
    $form = $this->createForm(UsersacademiType::class,$ac,array('id'=>$id)); 
    $form->handleRequest($request); 

    if($form->isValid()){ 
     $ac->setIdacademicprogram($form->get("idacademicprogram")->getData()); 
     $ac->setIduser($form->get("iduser")->getData()); 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($ac); 
     $flush = $em->flush(); 
    } 
    else{ 
    } 


    return $this->render("AppBundle:admin:apteacher.html.twig", array(
     "form" => $form->createView() 
    )); 
} 

マイフォーム:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('idacademicprogram', EntityType::class, array(
      "required"=>"required", 
      'class' => 'AppBundle:Academicprogram', 
      'choice_label' => 'name' 
     )) 
     ->add('iduser', EntityType::class, array("required"=>"required", 
      "data" =>$options["id"], 
      'class' => 'AppBundle:User', 
      "attr"=>array(
      "class" => "form-iduser form-control" 
     ))) 
     ->add('Registrar',SubmitType::class, array("attr"=>array(
      "class" => "form-submit btn btn-success" 
     ))); 
} 

だから私は(これが実際に実行されている)、次に2番目のフィールドで選択オプションを使用したAcademicProgramを選択できるようにしたいです(idUser)私は、デフォルトでは、選択されたユーザのID(そのID番号はコントローラによって提供されている)であり、このレジスタを送信できるようにしたいと考えています。

+1

__what__コード行でこのエラーが発生しますか? –

+0

完全なエラーメッセージが表示されない場合は難しいですが、「文字列に変換できませんでした」とは、Symfonyが文字列を要求しているときにオブジェクトを渡そうとしていることを意味します。私は$ options ["id"]がidの代わりにオブジェクトに設定されていると思います。 – MEmerson

答えて

1

ユーザフォームフィールドにchoice_labelを追加するのを忘れたか、Userエンティティ内に__toString()メソッドを追加できます。ドキュメントから

空白のままにすると、エンティティオブジェクトを文字列にキャストされますので、__toString()方法を持っている必要があります。

既定では、EntityTypeは既に値としてエンティティidを使用しています。

関連する問題