2012-01-10 3 views
0

해당 필드에 오류 메시지를 표시하고 싶습니다. 필드에 오류 메시지를 넣는 방법을 알고 있지만 삽입 된 값이 오류 메시지 자체가 아니라면 다시 제출 한 후에 동적 방법을 확인하려고합니다. 나는 교리 주석을 사용한다. 예를 들어 필드가 "title"이면 "제목을 채워야합니다!"라는 오류 메시지가 표시됩니다. 제목 필드가 더 이상 비어 있지 않으므로 다시 제출을 클릭하면 현재 유효합니다. if $entity->getTitle() == "The title must be filled" ... 나는 나뭇 가지와 jquery에서 오류 div가 표시되지 않도록 관리했으나 컨트롤러에서이를 수행하는 더 좋은 방법이 있는지 알고 싶습니다. ? 감사합니다입력 필드에 Symfony2 오류 메시지가 있습니다.

+0

그냥 아이디어 : 양식을 제출하기 전에 jQuery로 오류를 제거 할 수 있습니다. –

+0

정확히 그렇게했는데 컨트롤러에서 바로 처리하는 것이 더 낫다고 생각합니다. 그래서 그것이 가능한 경우 어떻게 가능할 지 묻습니다. – Matthew87

답변

1

잘못된 방법을 올바르게 수행하는 방법을 묻고 있습니다 ... 입력 값이 처리하려는 값이 아닌 경우 먼저 값을 입력해야합니다. 즉, 당신의 이유가 분명하다고 확신합니다 ...

FormEvents::BIND_CLIENT_DATA을 청취하고 오류 문자열과 일치하는 양식 데이터를 지워야합니다.

public function buildForm(FormBuilder $builder, array $options) 
{ 
    $builder->add('title'); 
    $builder->get('title')->addEventListener(
     FormEvents::BIND_CLIENT_DATA, 
     function(FilterDataEvent $event) 
     { 
      if ('The title must be filled' == $event->getData()) { 
       $event->setData(''); 
      } 
     }, 
    ); 

이 동작을 적용 할 경우

전 세계적으로 당신은 'field'를 확장하는 형태로 형식 확장자를 사용하여이 수신기를 연결해야합니다. 또한 유효성 검사기를 사용하여 현재 필드에 대해 가능한 모든 유효성 검사 오류 메시지를 인트로 스펙 트하고이를 변환기를 통해 전달한 다음 결과를 이벤트 데이터와 비교해야합니다.

+0

컨트롤러에서 확인하면 거의 동일합니다. 모든 단일 필드를 하나씩 확인해야합니다. 필드의 오류 메시지가 무엇인지 확인하는 것과 같은 것을 원합니다. 필드의 값인 경우 유효하지 않습니다. 따라서 모든 주장을 순식간에 체크하지 않고 하나씩 확인하십시오. 어쨌든 답장을 보내 주셔서 감사합니다 – Matthew87

+0

어떻게 할 수 있었는지 설명하기 위해 제 대답이 업데이트되었지만 해결할 수는 없습니다 : P –

+0

고맙습니다! – Matthew87