2016-12-14 11 views
1

Есть объекты службы и тега с отношениями ManyToMany.Symfony получить onetomany значения сущности в поле формы

class Service { 
     /** 
     * @ORM\ManyToMany(targetEntity="Tag", mappedBy="serviceList",cascade={"persist"}) 
     */ 
     private $tagList; 
    } 

    class Tag{ 
     /** 
     * @var string 
     */ 
     private $name; 

     /** 
     * @ORM\ManyToMany(targetEntity="Service", inversedBy="tagList") 
     * @ORM\JoinTable(name="tags_services") 
     */ 
     private $serviceList; 
} 

Вот ServiceType

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('title', TextType::class, array(
      'label' => 'Title', 
     )) 
     ->add('tags', TextType::class, array(
      'label' => 'Tags', 
      'mapped' => false 
     )) 
    ; 
} 

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

Например, у меня есть служба «Math tutor» с tagList: «Math», «Tutor», «Lessons». И когда я пытаюсь изменить его, форма должна выглядеть следующим образом:

| title | Math tutor   | <- text field 
| tags | Math, Tutor, Lessons | <- text field 

ответ

2

Вы должны использовать DataTransformer: http://symfony.com/doc/current/form/data_transformers.html

Это небольшой пример для простого случая:

$builder->add('tags', TextType::class); 

$builder->get('tags') 
     ->addModelTransformer(new CallbackTransformer(
       function ($tagsAsArray) { 
        // transform the array to a string 
        return implode(', ', $tagsAsArray); 
       }, 
       function ($tagsAsString) { 
        // transform the string back to an array 
        return explode(', ', $tagsAsString); 
       } 
      )) 
     ; 

 Смежные вопросы

  • Нет связанных вопросов^_^