Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-10-2008 15:50:16

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

[Zend_Filter_Input] Champs récupérés - petite question

Salut,

Je me pose une petite question.

Lorsqu'on utilise Zend_Filter_Input par exemple de cette manière:

Code:

                 // Filtres et Test des champs saisis
                Zend_Loader::loadClass('Zend_Filter_Input');
                Zend_Loader::loadClass('Zend_Filter_StringTrim');                                                
                
                $filters = array(
                    '*'   => 'StripTags',            
                );
                
                $validators = array(
                    'fmNom'          => array('NotEmpty','messages' => 'Champ Nom non renseigné'),
                    'fmSociete'      => array('NotEmpty','messages' => 'Champ Société non renseigné'),
                    'fmAdresse'      => array('NotEmpty','messages' => 'Champ Rue non renseigné;'),                
                    'fmCodepostal'   => array('NotEmpty', 'Digits',                                                
                                               'messages' => array(
                                                    'Champ Code postal non renseigné',
                                                    'Le champ Code postal ne doit contenir que des chiffres'
                                                )                                    
                                         ),                
                    'fmVille'        => array('NotEmpty','messages' => 'Champ Ville non renseigné')
                );
                                    
                $input = new Zend_Filter_Input($filters, $validators, $_POST);                                    
                $input->setDefaultEscapeFilter(new Zend_Filter_StringTrim);
                if ($input->hasInvalid()) {
                    $invalid_messages = $input->getMessages();                
                    $errors_txt = 'Le message n\'a pas pu être envoyé pour les raisons suivantes :';
                    foreach($invalid_messages as  $k => $v) {
                        foreach($v as $kk => $vv) {
                           $errors_txt.='<br />'.utf8_encode($vv);
                        }
                    }                                        
            }

L'objet $input résultat ne contient pas tous les champs, alors que dans le filtre j'indique bien avec '*' de filtrer l'ensemble des valeurs de $_POST.

Par exemple si les champs sont valides et que j'essaie d'y accéder par "$input->nom_du_champ" (sachant que le nom de la règle de validation est le nom du champ du formulaire) je n'obtiens rien.

Dans cet exemple $input->fmNom, $input->getEscaped('fmNom') ou $input->getUnescaped('fmNom') ne me donnent rien.

C'est un peu embêtant parce que je dois par la suite continuer à manipuler des "$this->_request->getParam()" alors que ce serait quand même beaucoup plus simple de n'utiliser que l'objet "$input";

une solution native ?


Merci,

A+ benjamin.

Dernière modification par Delprog (09-06-2009 16:29:01)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#2 28-01-2009 15:56:17

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Zend_Filter_Input] Champs récupérés - petite question

Salut,

Je reviens avec la même question smile


Avec Zend_Filter_Input je n'accède qu'aux champs passant par un validateur, alors que je passe aussi un filtre sur tous les champs, par la valeur magique "*".

Je suis donc obligé d'accéder aux champs non soumis aux validateurs par un getParam().

Y-a-t'il un moyen d'avoir accès à tous les champs depuis le filter_input ($input->get()) ?


Merci,


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#3 29-01-2009 18:55:27

jenreve
Nouveau membre
Date d'inscription: 22-12-2008
Messages: 3

Re: [Zend_Filter_Input] Champs récupérés - petite question

Bonsoir,

pour récupérer tous les champs , la méthode  getEscaped()  le fait automatiquement si tu ne fournis pas d'argument.

sinon, n'oublie pas de vérifier les champs invalides et les champs manquants

Code:

if($inputValidator->hasInvalid() || $inputValidator->hasMissing(){

}

Bon courage

Hors ligne

 

#4 16-02-2009 09:24:53

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Zend_Filter_Input] Champs récupérés - petite question

Salut,

Merci ça fonctionne.


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#5 09-06-2009 16:33:46

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Zend_Filter_Input] Champs récupérés - petite question

Bonjour,

Je ré-ouvre le sujet.

Exemple:

Code:

$data_in = array(
    'broker_provider_id'         => $xml->INFOS_AGENCE->IDENTIFIANT,    
    'editor_id'                  => $editor_id,
    'broker_company_name'        => $xml->INFOS_AGENCE->RAISON_SOCIALE,
    'broker_commercial_name'     => $xml->INFOS_AGENCE->ENSEIGNE_COMMERCIALE,
    'broker_address'             => $xml->INFOS_AGENCE->ADRESSE,
    'broker_additional_address'  => $xml->INFOS_AGENCE->COMPLEMENT_ADRESSE,
    'broker_zip_code'            => $xml->INFOS_AGENCE->CODE_POSTAL,
    'broker_town'                => $xml->INFOS_AGENCE->VILLE,
    'broker_phone'               => $xml->INFOS_AGENCE->TEL_PRINCIPAL,
    'broker_fax'                 => $xml->INFOS_AGENCE->FAX,
    'broker_cell_phone'          => $xml->INFOS_AGENCE->TEL_PORTABLE,
    'broker_email'               => $xml->INFOS_AGENCE->EMAIL,
    'broker_franchise'           => $xml->INFOS_AGENCE->FRANCHISE,
    'broker_insee'               => $xml->INFOS_AGENCE->CODE_INSEE
);    
$filters = array(
    '*'                  => 'StringTrim',
    'broker_provider_id' => 'Alnum'
);

$validators = array(
    'broker_provider_id'     => array('NotEmpty', 'Alnum', 'presence' => 'required'),
    'broker_company_name'    => array('NotEmpty', 'presence' => 'required'),
    'broker_commercial_name' => array('NotEmpty', 'presence' => 'required'),
    'broker_zip_code'        => array('NotEmpty', 'presence' => 'required'),
    'broker_town'            => array('NotEmpty', 'presence' => 'required')    
);

$data_verif = new Zend_Filter_Input($filters,$validators);
$data_verif->setData($data_in);

if ($data_verif->hasInvalid() || $data_verif->hasMissing()) {
   
}
else {
    $data_out = $data_verif->getEscaped();  // <-- Ne me renvoie que les champs présents dans $validators
}

Ici le getEscaped() ne me renvoie que les champs présents dans le validateurs et non tous les champs de mon $data_in qui sont sensés tous être filtrés.

C'est pas très pratique et assez embêtant en fait.

Une idée ?

Merci,

A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#6 09-06-2009 16:51:12

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Zend_Filter_Input] Champs récupérés - petite question

Pour info je fais:

Code:

$data_out = array_merge($data_verif->getEscaped(),$data_verif->getUnknown());

Mais la question c'est surtout que j'ai un filtre avec le joker '*', donc est-ce que tous les unknown sont-ils quand même passés par le filtre ? Est-ce parce que le filtre n'a rien modifié dans la valeur ?

Je vais fouiller dans la source de Zend pour voir.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages