2017-12-02 27 views
0

Symfony 3.3에서는 모든 이메일 양식을 strtolower하고 싶습니다.Symfony : FORTRAT 이벤트에서 strtolower

나는이 확장 사용

class EmailTypeExtension extends AbstractTypeExtension 
{ 
    public function getExtendedType() 
    { 
     return EmailType::class; 
    } 

    public function buildForm(FormBuilderInterface $builder, array $options) { 
     $builder->addEventListener(
      FormEvents::POST_SUBMIT, 
      [ 
       $this, 
       'onPostSubmit' 
      ] 
     ); 
    } 

    public function onPostSubmit(FormEvent $event) 
    { 
     $form = $event->getForm(); 
     $data = $event->getData(); 

     $form->setData(strtolower($data)); 
    } 
} 

을하지만이 오류가 "당신은 제출 양식의 데이터를 변경할 수 있습니다.". "PRE_SUBMIT"또는 "SUBMIT"이벤트를 사용하면 데이터가 변경되지 않습니다./

도와 주시겠습니까?

+0

당신은 아마 당신의 동의 속도에서 작동해야 (구 71에서는 질문). – ccKep

답변

1

$form->setData() 방법을 사용하여 양식을 수정할 수 없습니다.
당신은이처럼 FormEvent $event의 데이터를 수정해야합니다 :

public function onPostSubmit(FormEvent $event) 
    { 
     $data = $event->getData(); 

     // e.g. manipulate submitted data only if it is not empty 
     if ($data["email"]) { 
      $data["email"] = strtolower($data["email"]); 
      $event->setData($data); 
     } 
    } 
+0

대단히 감사합니다 :) –