ZF-5123: Zend_Form_Element_File not rendering correct error message and always return a value with getValue()
Description
There was a lot of improvement on the Zend_Form_Element_File with 1.7 release. I still notice 2 issues with it. Here is the description :
- The getValue() always returns something even when the element is not required et nothing is post.
- When there are several Zend_Form_Element_File in the form, the error message always relate to the first.
Here is some real case :
This form allow the post of a video file (video), a picture (frame) and a thumb :
class My_Form_upload extends Zend_Form { public function init() { $this->setEnctype(Zend_Form::ENCTYPE_MULTIPART); $this->setMethod('post'); $element = new Zend_Form_Element_File('thumb'); $element->setLabel('Thumbnail:') ->setDestination(APPLICATION_PATH.'/tmp/data') ->addValidator('Count', false, 1) // ensure only 1 file ->addValidator('Size', false, 5120) // limit to 5k ->addValidator('Extension', false, 'jpg') // only JPEG ->setRequired(true); $this->addElement($element);
$element = new Zend_Form_Element_File('frame'); $element->setLabel('Frame:') ->setDestination(APPLICATION_PATH.'/tmp/data') ->addValidator('Count', false, 1) // ensure only 1 file ->addValidator('Size', false, 307200) // limit to 300k ->addValidator('Extension', false, 'jpg') // only JPEG ->setRequired(false); $this->addElement($element);
$element = new Zend_Form_Element_File('video'); $element->setLabel('Movie:') ->setDestination(APPLICATION_PATH.'/tmp/data') ->addValidator('Count', false, 1) // ensure only 1 file ->addValidator('Size', false, 51200000) // limit to 50M ->addValidator('Extension', false, 'flv') // only FLV ->setMaxFileSize(51512320) // Set the max upload size for all the form, so it is the sum of all the fields ->setRequired(false); $this->addElement($element); ...
When I do a getValues() on the form and nothing was send for 'frame' and/or 'video' (which are not required, I still get "data" as value.
When post the form without 'thumb (which is required), I get an error message regarding 'video' : The file 'video' was not uploaded When it should be : The file 'thumb' was not uploaded
Maybe I didn't understand the good way to use Zend_Form_Element_File but it still look like a bug to me.
Regards, Olivier
Comments
Posted by Thomas Weidner (thomas) on 2009-11-13T12:16:27.000+0000
Not reproducable