我查看了类似的答案,但找不到任何解决方案。
我的一个表单中有一个文件元素。该元素定义如下。
$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 :(得分: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');