Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
je fais face à un petit problème dans un de mes formulaires. J'ai un formulaire qui permet à un utilisateur de modifier ses informations personnelles et d'ajouter un avatar s'il le souhaite.
L'ajout de l'avatar est non obligatoire mais lorsque je soumet mon formulaire, j'ai une erreur m'indiquant que le fichier uploadé est vide...
J'ai lu dans la doc que le fait d'utiliser un input de type file rajoutait automatiquement le validateur UploadFile de Zend mais même en mettant le champs en non requis, ça ne fonctionne pas...
Voici mon code du formulaire (fieldset)
[lang=php]public function init() { $this->add([ 'name' => 'file', 'type' => 'file', 'attributes' => [ 'id' => 'person_file', 'class' => 'input-file', 'accept' => 'image/*' ], 'options' => [ 'label' => 'avatar', 'label_attributes' => [ 'class' => 'btn btn-primary' ] ] ]); } public function getInputFilterSpecification() { return [ 'file' => [ 'required' => false, 'allow_empty' => true, 'continue_if_empty' => true, 'validators' => [ [ 'name' => 'FileExtension', 'options' => [ 'extension' => ['jpg, jpeg, png'], 'message' => 'wrong_type_file' ] ], [ 'name' => 'FileSize', 'options' => [ 'max' => '2MB', 'message' => 'file_too_large' ] ] ], ] ]; }
Et le code de mon controller :
[lang=php]if ($request->isPost()) { $data = \array_merge_recursive($request->getPost()->toArray(), $request->getFiles()->toArray()); $form->setData($data); if ($form->isValid()) { } else { } }
Quand je débug mes données, j'ai toujours ceci :
[lang=php] 'file' => array (size=5) 'name' => string '' (length=0) 'type' => string '' (length=0) 'tmp_name' => string '' (length=0) 'error' => int 4 'size' => int 0
Avez-vous une idée d'où ça peux venir et comment faire un sorte que je puisse soumettre mon formulaire sans avoir à télécharger obligatoirement un avatar ?
Merci d'avance pour vos réponses
Romain
Hors ligne
Bonjour,
je ne sais pas si cela peut t'aider mais il existe maintenant des "Optional Input Filter", personnellement je n'utilise pas zend-form mais j'ai déjà utilisé les filtre optionnels.
Cordialement
Hors ligne
Bonjour,
malheureusement, ma version de Zend est trop vieille et n'implémente pas ces nouveaux Input Filter.
D'autres idées ?
Hors ligne