IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres composants PHP Discussion :

Ajout d'une classe dans la libraire "Validate" non reconnu par l'Autoload [ZF 1.0]


Sujet :

Autres composants PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 29
    Points : 21
    Points
    21
    Par défaut Ajout d'une classe dans la libraire "Validate" non reconnu par l'Autoload
    Bonjour,

    Voila plusieurs heures que je fouille le net , les forums , mais je ne trouve pas de réponse à ma question :

    Mes fichiers :

    Autoload du Bootstrap.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    protected function _initAutoload()
    {
     
    	$moduleLoader = new Zend_Application_Module_Autoloader(array(
    		'namespace' => '',
    		'basePath' => APPLICATION_PATH));
    	return $moduleLoader;
     
    }
    Création d'une classe perso (comparaison de mot de passes) dans library/Validate/Password.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
     
    require_once 'Zend/Validate/Abstract.php';
     
    class Zend_Validate_Password extends Zend_Validate_Abstract
    {
        const PASSWORD_MISMATCH = 'passwordMismatch';
     
        protected $_compare;
     
        public function __construct($compare)
        {
            $this->_compare = $compare;
        }
     
        protected $_messageTemplates = array(
            self::PASSWORD_MISMATCH => "Password doesn't match confirmation"
        );
     
        public function isValid($value)
        {
            $this->_setValue((string) $value);
     
            if ($value !== $this->_compare)  {
                $this->_error(self::PASSWORD_MISMATCH);
                return false;
            }
     
            return true;
        }
     
    }
    Quand j'essaye d'instancier ma classe de mon formulaire dans application/forms/User.php :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    new Zend_Validate_Password('test');
    J'ai cette erreur :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Warning: include_once(Zend\Validate\Password.php) [function.include-once]: failed to open stream: No such file or directory in F:\Zend\Install\ZendServer\share\ZendFramework\library\Zend\Loader.php on line 146
     
    Warning: include_once() [function.include]: Failed opening 'Zend\Validate\Password.php' for inclusion (include_path='F:\Zend\projects\search-events\application/../library;F:\Zend\projects\search-events\library;.;F:\Zend\Install\ZendServer\share\ZendFramework\library') in F:\Zend\Install\ZendServer\share\ZendFramework\library\Zend\Loader.php on line 146
     
    Fatal error: Class 'Zend_Validate_Password' not found in F:\Zend\projects\search-events\application\forms\Users.php on line 73
    Comme si l'autoload n'arrivais pas à charger cette classe et qu'il ne la trouvais pas ?

    Est ce que ça peut venir du fait qu'il ai un l'espace nom "Zend" réservé pour la librairie Zend uniquement auquel cas je devrait peut être changer le nom de ma classe et ajouter cette espace nom à mon Autoloader ? Comment ceci s'exprime t'il synthaxiquement dans l'autoloader ?

    En tout cas une nuance m'échappe merci de m'éclairer là dessus.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 599
    Points
    12 599
    Par défaut
    Bonjour, tu mélanges les chemins et nom de classe.

    Alors :

    1 Tu ne peux pas ajouter des classes dans le core du Framework, tu n'est pas un dev de ZF que je sache, de plus le jour où tu feras une mise à jour, tu perdras cette classe.

    2 . tu dis que cette classe validateur se trouve ici library/Validate/Password.php

    dans ce cas, ta classe doit s'appeler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    class Validate_Password extends Zend_Validate_Abstract
    En ayant pris la peine bien sur de mettre dans ton config.ini la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ; Espaces d'autoload à charger
    autoloadernamespaces[] = "Validate_"

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Merci, je comprends un peu mieux comment ça fonctionne !

    Par contre en ce qui concerne mes ajouts de classes, est-ce bien de les mettrent au même endroit que les classes de base de zend ? ou dois-je appliquer une convention particulière dans ce cas ?

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 599
    Points
    12 599
    Par défaut
    Tu peux ajouter tes classes dans /library mais pas dans /library/Zend

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout d'une classe dans CRM
    Par kaoutar_kawtar dans le forum Odoo (ex-OpenERP)
    Réponses: 7
    Dernier message: 24/04/2014, 20h16
  2. Ajout d'une classe dans un web service existant?
    Par doudoubens dans le forum Services Web
    Réponses: 0
    Dernier message: 09/05/2011, 10h22
  3. Ajout d'une variable dans une class fait planter
    Par Geoff-sk8 dans le forum C++
    Réponses: 4
    Dernier message: 11/10/2006, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo