2016-12-14 2 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; 
} 

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

ServiceType 자리

경우 서비스 개체를 편집, 어떻게 서비스 태그 이름은 태그 텍스트 양식 필드에 쉼표로 구분받을 수 있나요?

예를 들어 tagList : '수학', '지도 교사', '수업'으로 '수학 교사'서비스를 받았습니다.

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

답변

2
당신은 사용해야

DataTransformer : 나는 그것을 편집하려고 할 때, 형태가 같아야합니다

$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); 
       } 
      )) 
     ; 
: http://symfony.com/doc/current/form/data_transformers.html

이것은 간단한 경우에 대한 작은 예입니다