Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 12-06-2013 19:21:24

RomainB
Membre
Lieu: Montpellier
Date d'inscription: 30-11-2012
Messages: 12
Site web

Validateur Db/NoRecordExist dans InputFilter

Bonjour,

J'ai un petit soucis avec l'utilisation du validateur Db/NoRecordExist.

Je définis les InputFilter d'un formulaire (que j'utilise en création ET en modification) dans mon modèle.

Je souhaiterais vérifier que la valeur d'un champs du formulaire est unique (n'existe pas en BDD). Pour cela, j'utilise le validateur Db/NoRecordExist dans mon InputFilter.
Le problème est le suivant: en création, pas de pb. En édition, le validateur indique que le champs existe déjà (normal, je suis en train d'editer un enregistrement existant...).
Si je rajoute l'option Exclude dans le validateur, l'update fonction bien, mais en création, la vérification ne fonctionne plus (et je peux ainsi ajouter des doublons...)

Comment faire ?
Faut-il sortir la declaration InputFilter du modèle, et en faire 2 versions ? C'est-à-dire pour la creation, utilisation du Db/NoRecordExist sans l'option Exclude, et pour la modification utilisation de l'option Exclude ?

Ci-dessous, le code de mon modèle (sans le "superflu"):

Code:

class Category implements InputFilterAwareInterface
{
    [...] // Différents attributs ici
    
    public function getInputFilter()
    {
        if (!$this->inputFilter) {
            $inputFilter = new InputFilter();

            $inputFilter->add(
                array(
                    'name'     => 'name',
                    'required' => true,
                    'filters'  => array(
                        array('name' => 'StripTags'),
                        array('name' => 'StringTrim'),
                    ),
                    'validators' => array(
                        array(
                            'name'    => 'StringLength',
                            'options' => array(
                                'encoding' => 'UTF-8',
                                'min'      => 1,
                                'max'      => 100,
                            ),
                            'name' => 'Db\NoRecordExists',
                            'options' => array(
                                'adapter' => $this->dbAdapter,
                                'table' => 'category',
                                'field' => 'name',
                                // Le probleme ici avec ou sans le exclude)
                                'exclude' => array(
                                    'field' => 'id_category',
                                    'value' => $this->id_category
                                )
                            )
                        ),
                    ),
                )
            );
            
            $inputFilter->
    
            $inputFilter->add(
                array(
                    'name'     => 'slug',
                    'required' => true,
                    'filters'  => array(
                        array('name' => 'StripTags'),
                        array('name' => 'StringTrim'),
                        array('name' => '\Jobeet\Filter\Slugify'),
                    ),
                    'validators' => array(
                        array(
                            'name'    => 'StringLength',
                            'options' => array(
                                'encoding' => 'UTF-8',
                                'min'      => 1,
                                'max'      => 100,
                            ),
                        ),
                    ),
                )
            );
            
            $this->inputFilter = $inputFilter;
        }
    
        return $this->inputFilter;
    }
}

Merci d'avance pour votre aide.

Hors ligne

 

#2 13-06-2013 09:52:43

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Validateur Db/NoRecordExist dans InputFilter

Salut tu peux effectivement créer 2 input filter différent mais je pense que le plus propre serait lors de la création de ton formulaire en mode édition de simplement supprimer l'input filter Db/NoRecordExist comme ça pas de problème.

Hors ligne

 

#3 13-06-2013 16:53:26

RomainB
Membre
Lieu: Montpellier
Date d'inscription: 30-11-2012
Messages: 12
Site web

Re: Validateur Db/NoRecordExist dans InputFilter

pfou, je dois être fatigué moi pour pas y avoir pensé lol
C'est effectivement la solution la plus simple / propre... je vais regarder ça

Merci pour la réponse smile

Dernière modification par RomainB (13-06-2013 16:53:45)

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