Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Pour ceux qui n'utilise pas Zend_Form, quelle approche vous utilisez pour contrôler vos données d'entrées vers votre BDD ? j'avous que Zend_Form me plait moyen au niveau MVC et flexibilité donc je veux essayer de me faire une couche sympa de contrôle de formulaire mais j'ai un peu de mal pour savoir par ou commencer et quelle solution est la plus pratique, flexible et efficace. Vous faites comment vous ?
Hors ligne
je sépare deux choses
le filtrage des données qui consiste à nettoyer et lire les données du formulaire pour les rendre acceptable par le modèle.
suppression des espaces avant après si nécessaire vérification de type utilisateur et
et la vérification métier.
la première est assuré par le contrôleur. c'est lui qui connais la vue et qui sais dans quelle langue est l'interface utilisateur. c'est donc lui qui va accepter ou refuser la chaine '28/02/2008' comme valeur de date suivant qu'on est en français ou en anglais. il va aussi en faire une variable dans le type attendu par le modèle (dans ce cas objet date ou chaine format iso ou entier timestamp)
le modèle lui va s'assurer que les données sont sémantiquement correcte sans sans du metier. par exemple pas de prise de rdv après j-2
pour cela je mets dans mon contrôleur une fonction une _filter qui est défini à partir d'un tableau
et une autre qui est fournis par le métier que j'appelle dans la fonction _verifForm
du coup ma vérification de formulaire est commune à tous mes formulaires elle se réduit à
public function _checkFormAction($perform = true) { $this->_linkContext(); if ($form = $this->_request->get('form')) if (method_exists($this, '_filter')) { $this->_filter($form); } else { foreach ($form as $key=>$value) { $this->context->formData->$key = $value; } } $ok = $this->_verifForm(); if ($ok) { $redirect = $this->_to('save'); } else { $this->_messenger->addError($this->_messages['invalidFormData']); $redirect = $this->_to('showForm'); } if ($perform) $this->_redirect($redirect); else return $redirect; }
cette méthode est placé dans une classe d'action dont dérive tous mes contrôler.
A+JYT
Hors ligne
ok cette approche me parait bien sympa et cohérente.
Pour les filtres et les controles de saisie (date, requis, entier ...) coté controlleur tu utilises les zend_filter et zend_validate ?
Hors ligne
Oui et non
J'avais déjà un truc avant ZF et j'en ai gardé un bout mais je pense passer tout ça sous Zend_Validate et Zend_Filter
mais l'introduction de Zend_Form vient un peu perturber tout ça
Alors pour le moment je ne sais pas trop comment je vais faire évoluer la chose
A+JYT
Hors ligne
Petit retour pour une utilisation rapide de Zend_Form via .ini: c'est magique (mis à part un petit bug)
C'est vrai qu'on se perd un peu avec le code pas forcément découpé au mieux, mais ça facilite tellement la tâche que j'estime que ça en vaut la peine.
Hors ligne