2017-01-19 1 views
0

이런 종류의 시나리오가 발생하는지 모르겠습니다. symfony에서 mongodb를 사용합니다. mongodb에 연결하는 문서를 만들고 있습니다. 나는 모음 이름을 제품를 작성하고 제품 아래에있는 필드는 AJAX를 사용하여 양식을 제출할 때 FormType에서 포함하지 않는 필드를 추가하는 방법은 무엇입니까?

- id 
- name 
- price 

내가 확인을 위해 양식 유형을 추가 할 수 있습니다.

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

    public function configureOptions(OptionsResolver $resolver) { 
     $resolver->setDefaults(
      array(
       'data_class' => 'Acme\StoreBundle\Document\Product', 
       'csrf_protection' => false 
      ) 
     ); 
    } 
} 

하지만 ProductType에 포함되지 않은 입력란을 추가하고 싶습니다. 그럴 때. 오류가 발생했습니다.

"This form should not contain extra fields." 

이는 형태

public updateCompleted(id:string,name:string,price:string,selected:string){ 

      let data = {name:name,price:price,selected:selected}; 
      let _data = {product: data}; 

      return $.ajax({ 
       url:this.setCompletedUrl(id), 
       type: "PATCH", 
       data:_data, 
       async:false 
      }); 
     } 

나는 선택에 대해서 이야기하고 다른 필드를 제출 내 아약스이다. 내 백엔드에서 클라이언트가 선택한 선택한 문자열을 확인하고 싶습니다. 그러나 symfony가이 필드를 내 문서 Product에 추가하려고합니다. 그것을 할 다른 방법이 있습니까?

답변

1

봅니다 양식 필드의 '매핑'옵션을 사용합니다.

2

FormType에 새 필드를 추가하십시오. 옵션에서 'mapped' => false을 설정하십시오. 필드가 귀하의 문서 제품에있을 필요는 없습니다.

Form 개체를 통해 새 필드의 게시 값을 가져올 수 있습니다.

희망이 있습니다. 제품 객체로 설정하지 않을 선택이 경우

class ProductType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('name', TextType::class) 
      ->add('price', TextType::class); 
      ->add('selected', TextType::class, [ 
       'mapped' => false 
      ]) 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(
      array(
       'data_class' => 'Acme\StoreBundle\Document\Product', 
       'csrf_protection' => false 
      ) 
     ); 
    } 
} 

하지만 선택된 값 당신은 Request 개체에서 찾을 수 있습니다

+0

나는이 똑같은 해결책을 제안하려고했습니다! –

관련 문제