2017-08-10 24 views
0

私はこのような選択EntityTypeにデフォルト値を設定しようとしている:Symfony3 EntityTypeのデフォルト値を設定するには?

$builder 
      ->add('town', EntityType::class, array(
       'label' => "TOWN", 
       'class' => 'AppBundle:Town', 
       'choice_label' => 'name', 
       'choice_value' => 'id', 
       'attr' => array('class' => 'form-control'), 
       'placeholder' => 'CHOOSE_AN_OPTION', 
       'required' => false, 
       'data' => $this->em->getReference('AppBundle:Town', $options['attr']['town']) 
      )); 

私はデータオプションを使用してそれを実行しようとしていました。これはChoiceTypeには作用しますが、EntityTypeには作用しません。私は町のエンティティ ID、名前とオブジェクト全体をデータオプションに渡そうとしました。

Iは、コントローラからフォームオブジェクトを作成します。私は何も起こらないタウンIDまたは名前を渡すと

$finder = $this->createForm(UserFinderType::class, null, 
     array('attr' => array('role' => $this->getUser()->getRole(), 
      'town'  => empty($params['town']) ? null : $townService->findOneById($params['town'])->getId()))); 

、プレースホルダが示されています。プレースホルダを削除すると、空白のオプションが選択されます。

私は町全体のオブジェクトを渡すと、このエラーが返されます。Catchable Fatal Error: Object of class AppBundle\Entity\Town could not be converted to string

をそして、私は__toStringメソッドを実装する場合、私はIDを取得したり、名前しようとしたのと同じ結果を得ます。

+0

https://stackoverflow.com/a/45468030/4224384 – yceruto

答えて

0

あなたはTownクラスで__toString関数を作成する必要があります。

AppBundle\Entity\Town 

................. 

public function __toString(){ 
    return $this->name; // If you have `name` field or u can return `id` 
} 
関連する問題