Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-12-2010 04:17:39

bamak
Nouveau membre
Date d'inscription: 07-12-2010
Messages: 6

problème de validation de form

Bonjour à vous

Je  rencontre un problème lors de la validation de mon formulaire Zend Form.
Je veux vérifier la validité de la zone de saisie Text « titre ».
Jai  redéfini la methode isValid afin d'appeler ma propre classe de vérification  (Validate_NameMatch) .

Script du form album.php
<?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('Cramps'));
     return parent::isValid($data);
  }
}
?>

Voici ma classe de validation NameMatch.php
<?php
class Validate_NameMatch extends Zend_Validate_Abstract
{
    const NAME_MISMATCH = 'Le non du disque est 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;
    }

}

Elle se trouve dans le répertoire Library  Validate   NameMatch.php
L'instantiation de cette classe semble poser problème (ERREUR 500) lors de l’envoi du
Formulaire.

Voici aussi le fichier application.ini

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 = "garlouet"
resources.db.params.dbname = "bibliotheque"
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

Hors ligne

 

#2 07-12-2010 04:39:46

bamak
Nouveau membre
Date d'inscription: 07-12-2010
Messages: 6

Re: problème de validation de form

Je précice

1) que mon fichier bootstrap est vide
2) ... et que je voudrais savoir, SVP,  comment avoir plus d'infos (logs,messages..)
                  lorsque l'envoi du formulaire n'aboutit pas

Cordialement et grand merci

Hors ligne

 

#3 07-12-2010 15:09:00

bamak
Nouveau membre
Date d'inscription: 07-12-2010
Messages: 6

Re: problème de validation de form

Après avoir activé les logs php  j'ai trouvé : C'était mon fichier de classe validation
qui était "verrolé" (....manque de ' ou de ; par éxemple)
Maintenant le test marche ....Par contre en cas de controle du titre du disque incorrect  (<> 'Cramps) le formulaire n'affiche pas de message d'erreur !!! Il y a juste un POINT
Merci encore



mes classes :




<?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;
    }

}
?>

<?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('Cramps'));
      return parent::isValid($data);
  }
}
?>

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