Sujet : Hoa_Form / élément select / récupération de valeurs validateurs

Hey,

je voudrais deux petits coup de pouces, déjà le premier, comment ajouter un validateur sur un élément select alors que ce dernier est déclaré via tableau: (je souhaite que la valeur soit différente de 0)

        $this->addElement(array(
            'type'      => Hoa_Form::ELEMENT_SELECT,
            'attribute' => array(
                'id'    => 'idcat',
                'name'  => 'idcat'
            ),
            'option'    => $options,
            'label'     => 'Catégorie de la brève :'
        ));

Ensuite, je ne sais pas pourquoi, mais je n'arrive pas à récupérer ma valeur une fois le formulaire validé (alors que les autres valeurs oui)
:

            $idcat = $form->get('idcat')->getValue();

Me renvoi un array vide... hmm (et j'ai vérifié, les données post sont bien remplies)

J'aurais aussi par la suite des question sur la gestion des erreurs (pour l'instant je n'ai qu'une seule erreur affichée sans que je ne fasse quoi que ce soit, sur les autres champs, pas de message d'erreur), mais chaque choses en son temps!

Merci d'avance pour vos réponses wink

Les codes ci-joints:
Mon modèle de form:

<?php
 
import('Form.~');
import('Form.Element.InputText');
import('Form.Element.Textarea');
import('Form.Element.InputSubmit');
 
importModule('Database.Utf8');

class FormBreve extends Hoa_Form {
    
    
    public function __construct ( $idBreve = 0 , $titre = '', $idCat = 0, $contenu = '') {
 
        /**
         * On définit notre action.
         */
        parent::__construct(PUBLIC_URL.'Admin/Editbreve.html');
 
        /**
         * On crée notre champ pour le titre de la breve
         */
        $title = new Hoa_Form_Element_InputText('title');
        $title->setLabel('Titre de la brève&nbsp;:')
            ->setValidator('Empty')
            ->setValidator(array(
                'StringLength' => array(
                    'min'      => 1,
                    'max'      => 250
                )
            ));
        
        /**
         * On ajoute notre champ pour le titre de la breve
         */
        $this->addElement($title);
        
        $this->addElement(array(
            'type'      => Hoa_Form::ELEMENT_INPUT_HIDDEN,
            'attribute' => array(
                'name'  => 'idBreve',
                'value' => $idBreve
            )
        ));
 
        $db = Hoathis_Database_Utf8::getLastInstance();
        try {
            $statement = $db->query(
                'SELECT *
                FROM categories'
            );
            $categories = $statement->fetchAll();
        }
        catch ( Hoa_Database_Dal_Exception $e ) {
         
            $statement->closeCursor();
        }
        
        $options[0]='Choisissez une catégorie';
        foreach($categories as $cat){
            if($cat['id_categorie']==$idCat){
                $options[$cat['id_categorie']]=array(
                    'text'=>$cat['nom'],
                    'selected' => true
                );
            }
            else {
                $options[$cat['id_categorie']]=$cat['nom'];
            }
        }
 
 
        /**
         * On crée notre champ de contenu de la breve
         */
        $content = new Hoa_Form_Element_Textarea('content');
        $content->setAttribute('rows', 10)
                ->setAttribute('cols', 75)
                ->setLabel('Contenu de le breve&nbsp;:')
                ->setValidator('Empty');
 
        /**
         * On ajoute notre champ de contenu de la breve
         */
        $this->addElement($content);
        
        /**
         * On crée le bouton de soumission.
         */
        $this->addElement(array(
            'type'      => Hoa_Form::ELEMENT_INPUT_SUBMIT,
            'attribute' => array(
                'name'  => 'save',
                'value' => 'Sauvegarder'
            )
        ));
        
    }

}

l'appel:

$params = $this->getParameters();
        $idBreve = !empty($params['data.array']['idBreve']) ? (int)$params['data.array']['idBreve'] : 0;
        
        /**
         * On récupère notre formulaire.
         */
        $form             = new FormBreve($idBreve);
 
        /**
         * On donne formulaire à la vue.
         */
        $this->view->form = $form;
 
        /**
         * On fait la vérification des données.
         */
        if($form->isValid()) {
 
            $title=$form->get('title')->getValue();
            $content = $form->get('content')->getValue();
            $idcat = $form->get('idcat')->getValue();
            $idBreve = $form->get('idBreve')->getValue();
            
            // update
            if($idBreve > 0){

            }
            // insert
            else {

            }

        }

Re : Hoa_Form / élément select / récupération de valeurs validateurs

Hey,

désolé je ne vais pas pouvoir t'aider, pour les vérification, j'ai préféré faire un module Regexp car j'ai trouvé que le validateur du Framework n'était pas assez poussé. (Bien codé mais devoir rajouter tout le temps de nouveaux validateurs, je trouve ça un peu chiant).

Dans mon module Regexp j'ai fait des verif qui utilise des fois le framework pas toujours. Par exemple verif de nom, prénom, le regexp me parut la meilleur solution, car il fallait des mot comme jean-pierre, .... .

Et pour ta récupération de champs, je ne vais encore pas pouvoir t'aider car j'utilise toujours extract($_POST).

Dernière fois dit par Ecureuil Virtuel (01 Apr. 2010 09:42)

" L'imagination est plus importante que la connaissance. La connaissance est limitée alors que l'imagination englobe le monde entier, stimule le progrès, suscite l'évolution. " - Life in the cloud :: Getting Started with Hoa - Hoa débutant