2013-11-21 2 views
1

скажем, у меня есть сообщение юридического лицо, которое имеет $ названия поля (тип массива), и я хочу, чтобы позволить пользователю писать название должности в множественном языкеSymfony2 - Doctrine Entity поле массива и формирует

/** 
* Post 
* 
* @ORM\Table(name="posts") 
* @ORM\Entity 
*/ 
class Post 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @var array 
    * 
    * @ORM\Column(name="title", type="array", nullable=true) 
    */ 
    protected $title; 
} 

Как я могу создать тип формы, который генерирует эти поля, когда пользователь хочет отправить новое сообщение?

<input type="text" name="title[en]" /> 
<input type="text" name="title[fr]" /> 
+0

Я действительно не думаю, что это является хорошим способом реализации поведения перевода с помощью доктрины. Почему нельзя использовать DoctrineExtension? – Shady

ответ

1

Вы должны создать вложенный тип для вашей формы:

class TitleType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
      $builder 
        ->add('en') 
        ->add('fr'); 
    } 

    public function getName() 
    { 
      return 'form_type'; 
    } 
} 

Затем вы можете добавить этот подтип в основном типе:

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
      $builder 
        ->add('title', new TitleType()); 
    } 
Смежные вопросы