2017-10-16 4 views
2

모든 Symfony FormType에 기본값을 설정할 수 있습니까?모든 Symfony 양식 형식에 기본값 설정

현재 Google은 Symfony (3.3)를 기반으로하는 API 백엔드에서 작업하고 있습니다. 프론트 엔드에서 엔티티는 다음과 같은 객체로 나타납니다. {"id": 1, "username": "foo" ..... }

엔티티를 업데이트하려는 경우 객체를 JSON.stringfy하여 서버로 보냅니다. 우리가 $form->submit($request) 를 통해 우리의 기관에 요청을 결합하면 우리가이 없기 때문에

는하지만 우리는 ("이 양식은 별도의 필드를 포함 할 수 없습니다."을) 오류가 (그리고 사용하지 않는!) Form 유형의 "id".

그래서 우리는 (이 같은 사용자 정의 FormType 또는 무언가를 확장하지 않고) 매 FormType

public function setDefaultOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(['allow_extra_fields' => true]); 
} 

모든 FormTypes에 대한 기본값으로이 구성 할 수있는 방법이 있나요에 trueallow_extra_fields을 설정해야?

+0

엔티티에서 id 속성을 어떻게 정의하고 있습니까? (주석에 있음). –

답변

3

모든 양식 유형에 대해이 기본값을 true으로 변경하기 위해 양식 유형 확장을 만들 수 있습니다.

양식 유형 확장은 매우 강력합니다.이 양식을 사용하면 전체 시스템에서 기존 양식 필드 유형을 수정할 수 있습니다.

class MyFormTypeExtension extends AbstractTypeExtension 
{  
    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'allow_extra_fields' => true, 
     )); 
    } 

    public function getExtendedType() 
    { 
     return 'Symfony\Component\Form\Extension\Core\Type\FormType'; 
    } 
} 

Official documentation 입력 확장을 등록하는 방법에 대한 자세한 내용을 참조하십시오.

참고 :allow_extra_fields 옵션이 FormTypeValidatorExtension에 정의되어 있으므로이를 확인하기 위해 priority 태그 속성을 사용, 그렇지 않으면 기본값을 재정의 한 후 사용자 지정 형식 확장이 등록되어 있는지 확인합니다.

+0

thx, 그것은 내가 찾고 있었던 바로 그 것이었다! – Fabian