Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Form
Zend_Form Forum d'entraide pour le composant Zend_Form du Zend Framework (création de formulaires, helpers, AJAX etc.). Avant de poster -> FAQ Zend_Form.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2010, 14h27   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 6
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 6
Points : 0
Points : 0
Par défaut Création d'un validateur

Bonjour à vous
Je test une classe de "validation de saisie" perso et j'ai un petit souci.
Le contrôle du titre du disque (Il doit etre = 'TOTO') marche mais
en cas d'echec aucun message apparait dans le formulaire .... Il y a juste un POINT
Est ce que ce n'est pas un conflit avec addValidator (..qui eux marchent correctement) ?
Merci encore pour votre aide

mes classes :

classe validate perso:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
require_once 'Zend/Validate/Abstract.php';
 
class Validate_NameMatch extends Zend_Validate_Abstract
{
    const NAME_MISMATCH = 'nom titre accepté';
 
     protected $_compare;
 
    public function __construct($compare)
    {
        $this->_compare = $compare;
    }
 
    protected $_messageTemplates = array(
        self::NAME_MISMATCH => 'Le nom du disque n est pas accepté'
    );
 
    public function isValid($value)
    {
        $this->_setValue((string) $value);
        if ($value !== $this->_compare)  {
           $this->_error(self::NAME_MISMATCH);
          return false;
       }
        return true;
    }
 
}
?>
classe formulaire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?PHP
class Application_Form_Album extends Zend_Form
{
    public function init()
    {
        $this->setName('album');
 
        $id = new Zend_Form_Element_Hidden('id');
        $id->addFilter('Int');
 
        $artiste = new Zend_Form_Element_Text("artiste", array('size' => 25));
        $artiste->setLabel('Artiste')
                ->setRequired(true)
                ->addFilter('StripTags')
                ->addFilter('StringTrim')
                ->addValidator('NotEmpty');
 
        $titre = new Zend_Form_Element_Text("titre", array('size' => 25));
        $titre->setLabel('Titre')
              ->setRequired(true)
              ->addFilter('StripTags')
              ->addFilter('StringTrim')
              ->addValidator('NotEmpty');
 
        $envoyer = new Zend_Form_Element_Submit('envoyer');
        $envoyer->setAttrib('id', 'boutonenvoyer');
 
        $this->addElements(array($id, $artiste, $titre, $envoyer));
    }
// Redefinition de la methode
   public function isValid($data)
   {
         $titre = $this->getElement('titre');
         $titre->addValidator(new Validate_NameMatch('TOTO'));
      return parent::isValid($data);
  }
}
?>
bamak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 17h35   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
Où se trouve ta classe ? Chez moi, ce genre de classes est dans un répertoire MyZend, répérée par le namespace MyZend_...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2010, 17h42   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 6
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 6
Points : 0
Points : 0
mon fichier contenant la classe de validation perso. se
trouve dans le répertoire Library\Validate\NameMatch.php

Voici aussi le fichier application.ini

Code x :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
phpSettings.date.timezone = "Europe/Paris"
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
autoloadernamespaces[] = "Validate_"
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.params.displayExceptions = 1
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 1
resources.db.adapter = "pdo_mysql"
resources.db.params.host = "127.0.0.1"
resources.db.params.username = "root"
resources.db.params.password = "xxxxxxxx:ccool::ccool::ccool::merci::merci::ccool::ccool:t"
resources.db.params.dbname = "xxxxxxxx"
resources.db.isDefaultTableAdapter = true
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.view.doctype = "XHTML1_STRICT"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

Je vous remercie pour votre aide
bamak est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h42.


 
 
 
 
Partenaires

Hébergement Web