2014-03-25 10 views
0

비슷한 대답을 살펴본 결과 해결책을 찾지 못했습니다.Zend Framework 1.12 - Zend Form 잘못된 유효성 검사 메시지를 표시하는 파일 요소

나는 내 양식 중 하나에 파일 요소가 있습니다. 이 요소는 아래에 정의되어 있습니다.

$file = $this->createElement('file', 'templateFile'); 
$file->setAttrib('id', 'templateFile') 
    ->setAttrib('class', 'form-control') 
    ->setAttrib('placeholder', 'File containing template headers') 
    ->setLabel('Template File <span class="glyphicons glyphicons-sheriffs_star requiredFlag"></span>') 
    ->setRequired(true) 
    ->addValidator('NotEmpty', false) 
    ->addValidator('Count', false, 1) 
    ->addValidator('Size', false, '1MB') 
    ->addValidator("Extension", false, array('csv', 'txt')) 
    ->addFilter('StringTrim'); 

$file->getValidator('NotEmpty')->setMessage('Please select a template file'); 
$file->getValidator('Count')->setMessage(' Please upload one file at a time'); 
$file->getValidator('Size')->setMessage('File exceeds the upload limit of 1 MB'); 
$file->getValidator('Extension')->setMessage('Invalid file extension. Only CSV and TXT files are allowed'); 

이 요소에는 맞춤식 오류 메시지가 사용되며 이는 문제의 원인입니다.

NotEmpty 유효성 검사 오류 메시지를 표시하는 대신 파일을 선택하지 않고 양식을 제출하면 아래 메시지가 표시됩니다.

File 'qhepstow_dblive.sql' exceeds the defined form size 

파일을 선택하지 않은 상태에서 다음과 같은 오류 메시지가 표시되는 것을 어떻게 방지 할 수 있습니까?

파일을 선택하지 않은 경우이 오류 메시지가 표시되어야합니다.

Please select a template file 

도움 주셔서 감사합니다.

답변

0

이 문제를 해결할 수있었습니다. 그것이 누군가를 돕기를 바랍니다.

문제는 필자가 elemenet 파일에 유효성 검사기를 추가하는 순서 때문이었습니다.

아래로 시퀀스를 변경하면 문제가 해결됩니다.

$file = $this->createElement('file', 'templateFile'); 
     $file->setAttrib('id', 'templateFile') 
      ->setAttrib('class', 'form-control') 
      ->setAttrib('placeholder', 'File containing template headers') 
      ->setLabel('Template File <span class="glyphicons glyphicons-sheriffs_star requiredFlag"></span>') 
      ->setDestination($destination) 
      ->setRequired(true) 
      ->addValidator('Count', false, 1) 
      ->addValidator('NotEmpty', false) 
      ->addValidator('Size', false, '15MB') 
      ->addValidator("Extension", false, array('txt' ,'csv')) 
      ->addFilter('StringTrim');