2017-03-23 6 views
0

동일한 엔티티의 콜렉션을 작성하는 양식을 만들어야하지만 콜렉션의 각 항목에 대해 모든 필드를 반복하지 않으려합니다 (다른 필드 값).입력을 공유하는 엔티티 컬렉션을 만드는 Symfony 양식

class Product 
{ 
    private $category; 
    private $name; 
    private $price; 
} 

내가 형태가 같은 시간에 같은 category의 여러 Product 개체를 만들 싶습니다

Product 엔티티를 상상해보십시오. 양식에는 category 필드와 nameprice 콜렉션이 있어야합니다. 자동으로 부모 필드 컬렉션 유형의 모든 개체를 채울 수있는 방법이 있는지

class ProductCollectionType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('category') 
      ->add('products', CollectionType::class, array(
       'entry_type' => ProductType::class, 
       'allow_add' => true, 
       'mapped'  => false, 
      )) 
     ; 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => Product::class, 
     )); 
    } 
} 

class ProductType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('name') 
      ->add('price') 
     ; 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => Product::class, 
     )); 
    } 
} 

누구나 알고

내 양식과 같이 보일 것인가? (이 예에서는 category 만)

고마워요!

답변

0

본인은 카테고리 회원에 대한 값을 요구하지 않는 제품에 대한 양식을 보유함으로써이 문제를 해결할 것입니다. 그런 다음 범주 값을 수신 할 단일 매핑되지 않은 필드를 만듭니다. 제출 후 컨트롤러에 일단 돌아 오면 맵핑되지 않은 범주 값을 각 Product 엔티티에 적용한 다음/persist/etc를 처리하십시오.

Symfony Forms page을 확인하고 '매핑 됨'을 검색하면 매핑되지 않은 입력란을 양식에 추가하는 방법을 알 수 있습니다.

+0

이것은 매우 기본적인 예제입니다.하지만 실제 사용 사례에서는이 필드가 하나의 필드에만 관련된 것이 아니며 모든 필드에 대해 내 엔터티에 적용하는 제약 조건을 활용하고 싶습니다. 심포니가 제공 한 무언가가이 사용 사례를 위해 만들어지기를 바랍니다. – Seb33300

+0

추가 제품을 인스턴스화하고 양식을 만들려면 범주 필드 만 필요합니다. 이제 Doctrine, Symfony 양식 등 Product :: category의 모든 제약 사항을 얻게되었습니다. "객체 집합에 하나의 양식 필드 사용"은 상당히 익숙한 - 경로 사용 사례입니다. 가능한 한 활용하십시오. 그러나 타협과 약간의 추가 작업을 기대해야합니다. – JasonGabler