Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
Je suis face à un petit probleme au niveau de l'ajout de ressources (dans le cas présent je souhaite ajouter des validateurs) d'après la doc (http://framework.zend.com/manual/fr/zen … ource.html) il suffit de faire :
[lang=php] $resourceLoader = new Zend_Loader_Autoloader_Resource(array( 'basePath' => 'path/to/some/directory', 'namespace' => 'My', )); $resourceLoader->addResourceType('acl', 'acls/', 'Acl') ->addResourceType('form', 'forms/', 'Form') ->addResourceType('model', 'models/');
Dans mon boostrap je fais ceci :
[lang=php] protected function _initAutoloadRessource() { $resourceLoader = new Zend_Loader_Autoloader_Resource(array( 'basePath' => BASE_PATH . '/../Yu', 'namespace' => 'Yu', )); $resourceLoader->addResourceType('validator', 'Validate/', 'Validate'); //Zend_Debug::dump($resourceLoader); }
Mais ça ne donne rien, quand j'ajoute un validateur à un validateur j'obtiens l'erreur suivante :
Message: Plugin by name 'Uri' was not found in the registry; used paths: Zend_Validate_: Zend/Validate/
Dernière modification par shadypierre (22-07-2011 21:53:35)
Hors ligne
Bonjour,
Pourrais-tu poster le code où tu appelles ton validateur, ainsi que le code de ton validateur pour qu'on puisse avoir une vue plus globale sur la levée d'exception ?
Hors ligne
Oui pas de probleme, donc dans un formulaire je fais ceci :
[lang=php] $title = $this->createElement('Text', 'title', array( 'label' => 'Titre', 'required' => true, 'validators' => array('Uri') ));
Et mon validateur importe peu pour le moment puisqu'il n'ai meme pas trouvé. Sinon il s'agit du validateur suivant
[lang=php] <?php class Yu_Validate_Uri extends Zend_Validate_Abstract { const BAD_URI = 'badUri'; protected $_messageTemplates = array( self::BAD_URI => "'%value%' n'est pas une URI valide" ); public function isValid($value) { $this->_setValue($value); if (!Zend_Uri::check($value)) { $this->_error(self::BAD_URI); return false; } return true; } } ?>
code dispo ici : http://wiip.fr/content/zend-framework-v … ur-une-url
Dernière modification par shadypierre (12-07-2011 13:40:12)
Hors ligne
Personne n'ajoute ces propres ressources O_o ?
Hors ligne
Désolé pour le temps de réponse !
Si je prends un projet où je charge des ressources, la grosse modification que j'apporte se trouve au niveau du application.ini :
autoloaderNamespaces[] = "Application_"
Bien entendu dans ce cas là mes fichiers sont ajoutés dans /library/Application (en suivant la structure définie par Zend_Tools lors de la création d'un projet).
Ensuite, je n'ajoute pas pour ma part de ressource loader, par contre j'instancie explicitement mon validateur :
[lang=php]$resourceLoader->addResourceType('validator', 'Validate/', 'Validate');
[lang=php] $validator = new Yu_Validate_Uri(); $title = $this->createElement('Text', 'title', array( 'label' => 'Titre', 'required' => true, 'validators' => array($validator) ));
Hors ligne
Merci pour ta réponse.Quand j'instancie mon validateur explicitement il n'y a pas de probleme tout fonctionne mais je voulais justement ne pas avoir à l'instancier
Si quelqu'un à une idée, sinon tant pis j'instancierais mes ressources à chaque fois
Hors ligne
C'est bon j'ai trouvé je n'avais pas bien réfléchi en faite. Donc pour ceux que ça intéresse pour ajouter un chemin de validateur, filtre, element, etc, il faut étendre la classe Zend_Form (ex : My_Form extends Zend_Form), personnellement c'était déjà le cas, puis dans la fonction de construction :
[lang=php] $this->addPrefixPath('Yu_Form_Decorator', 'Yu/Form/Decorator/', 'decorator'); $this->addPrefixPath('Yu_Form_Element', 'Yu/Form/Element/', 'element'); $this->addElementPrefixPath('Yu_Validate', 'Yu/Validate/', 'validate'); parent::__construct($options = null);
Voila, maintenant plus de probleme
Hors ligne
Pages: 1