Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
J'essaye de suivre ce tuto http://www.itanea.com/blog/2008/05/04/l … -framework
Comme vous vous en doutez, je galère grave!!!!!
1)Quand je cré la classe suivante class LoginForm extends Zend_Form
{, ou zend préconise t'il de placer ses classes perso?
2)Dois je ensuite l'inclure, ou alors la méthode suivante dans ma class me permet d'éviter son inclusion
public static function autoload() { include ('LoginForm.php'); }
Je précise que dans mon fichier boostrap.php j'ai ceci Zend_Loader::registerAutoload();
Merci par avance.
EDIT admin: penser à un titre clair, merci.
Dernière modification par masseur (23-01-2009 14:35:31)
Hors ligne
Il faut mettre tes chemins vers tes classes avec set_include_path :
http://ch2.php.net/manual/fr/function.s … e-path.php
La méthode autoload() est utilisée si tu crées ta propre classe de chargement. Ce qui ne doit pas être le cas.
Il faudrait que tu commences par faire le quickstart ou un tutorial sur l'utilisation de l'arborescence Zend et de ses quelques bases sinon tu vas jamais t'en sortir.
Hors ligne
keilnoth a écrit:
Il faut mettre tes chemins vers tes classes avec set_include_path :
http://ch2.php.net/manual/fr/function.s … e-path.php
La méthode autoload() est utilisée si tu crées ta propre classe de chargement. Ce qui ne doit pas être le cas.
Il faudrait que tu commences par faire le quickstart ou un tutorial sur l'utilisation de l'arborescence Zend et de ses quelques bases sinon tu vas jamais t'en sortir.
J'ai acheté un livre pour cela, mais je le trouve mal foutu
J'ai plus ou moins compris l'arborescence mais j'ai rien trouvé sur les classes persos.
Par défaut j'ai ceci.
set_include_path('.' . PATH_SEPARATOR . '../library' . PATH_SEPARATOR . '../application/default/models/' . PATH_SEPARATOR . get_include_path());
Imagions que je créé un répertoire MonAppli dans library avec à l'intérieur Maclass.php
Quel include devra t'on faire par rapport à la config de base?
Si j'ai bien compris faut se baser par rapport au fichier index.php.
Donc je fais cet include : include ('../library/MonAppli/Maclass.php');
J'ai bon?
Merci par avance.
Après cela , je pourrais me lancer dans une petite application de test
Dernière modification par masseur (22-01-2009 20:03:10)
Hors ligne
Si tu utilises Zend_Loader::registerAutoload(); alors tu ne dois faire aucun include.
L'autoloader de Zend ira chercher tes classes dans tes répertoires :
../library
et
../application/default/models/
Simplement, il faut les nommer correctement. Ta classe ../library/MonAppli/Maclass.php devrait être écrite ainsi :
<?php
class MonAppli_Maclass {}
Le _ permet de séparer les répertoires et la dernière partie du nom de ta classe s'écrit comme le fichier PHP qui la contient.
Exemple :
../application/default/models/View/Helper/IsAllowed.php
<?php
class View_Helper_IsAllowed extends Zend_View_Helper_Abstract {
}
Zend_View_Helper_Abstract se trouve dans :
../library/Zend/View/Helper/Abstract.php
C'est super simple non ?
Je crois que je vais faire un tutorial vu le nombre de fois que la question est posée.
Hors ligne
Merci keilnoth.
Voila qui me simplifie la tache.
Hors ligne
Une autre petite question.
Je veux créer un helper qui se situe pour moi dans C:\wamp\www\loginetauh\application\default\helpers.
Ce repertoire est donc en dehors de ../library et ../application/default/models/
J'ai rajouté ceci dans mon boostrap
Zend_Controller_Action_HelperBroker::addPrefix('../application/default/helpers');
Et ma classe qui est comme ceci
class Profile { }
Le fichier Profile.php est bien dans ./application/default/helpers
Bien entendu cela ne marche pas.
exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'Profile' was not found in the registry; used paths: Zend_View_Helper_: Zend/View/Helper/;C:/wamp/www/loginetauh//application/default/views\helpers/' in C:\wamp\ZendFramework-1.7.2\library\Zend\Loader\PluginLoader.php:386 Stack trace: #0 C:\wamp\ZendFramework-1.7.2\library\Zend\View\Abstract.php(1067): Zend_Loader_PluginLoader->load('Profile') #1 C:\wamp\ZendFramework-1.7.2\library\Zend\View\Abstract.php(545): Zend_View_Abstract->_getPlugin('helper', 'Profile') #2 C:\wamp\ZendFramework-1.7.2\library\Zend\View\Abstract.php(312): Zend_View_Abstract->getHelper('Profile') #3 [internal function]: Zend_View_Abstract->__call('Profile', Array) #4 C:\wamp\www\loginetauh\application\default\views\scripts\login\index.phtml(3): Zend_View->Profile() #5 C:\wamp\ZendFramework-1.7.2\library\Zend\View.php(107): include('C:\wamp\www\log...') #6 C:\wamp\ZendFramework-1.7.2\library\Zend\View\Abstract.php(787): Zend_View->_run('C:\wamp\www\log...') #7 C:\wamp\ZendFramework-1.7.2\library\Zend\Controller\Action\Helper\ViewRenderer.php(902): Zend_View_Abstract->render('login/index.pht...') #8 C:\wamp\ZendFramework-1.7.2\library\Zend\Controller\Action\Helper\ViewRenderer.php(923): Zend_Controller_Action_Helper_ViewRenderer->renderScript('login/index.pht...', NULL) #9 C:\wamp\ZendFramework-1.7.2\library\Zend\Controller\Action\Helper\ViewRenderer.php(962): Zend_Controller_Action_Helper_ViewRenderer->render() #10 C:\wamp\ZendFramework-1.7.2\library\Zend\Controller\Action\HelperBroker.php(276): Zend_Controller_Action_Helper_ViewRenderer->postDispatch() #11 C:\wamp\ZendFramework-1.7.2\library\Zend\Controller\Action.php(513): Zend_Controller_Action_HelperBroker->notifyPostDispatch() #12 C:\wamp\ZendFramework-1.7.2\library\Zend\Controller\Dispatcher\Standard.php(285): Zend_Controller_Action->dispatch('indexAction') #13 C:\wamp\ZendFramework-1.7.2\library\Zend\Controller\Front.php(934): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #14 C:\wamp\www\loginetauh\application\bootstrap.php(23): Zend_Controller_Front->dispatch() #15 C:\wamp\www\loginetauh\public\index.php(8): require('C:\wamp\www\log...') #16 {main}
Des idées?
Merci
Dernière modification par masseur (23-01-2009 14:47:36)
Hors ligne
Mauvaise méthode, mauvais nom de classe...
Hors ligne
J'ai fait tout simplement cela,
class Zend_View_Helper_Profile
avec Profile.php dans C:\wamp\www\loginetauh\application\default\views\helpers et la à priori ça marche.
Je ne comprends d'ailleurs pas pourquoi cela marche car à priori Default/View/Helpers/ (C:\wamp\www\loginetauh\application\default\views\helpers) ne fait pas parti du include_path non?
Quelle est la différence entre default\helpers et default\views\helpers.
Le deuxième est la vue du helper que l'on aura codé dans le premier chemin( si nécessaire)?
Hors ligne
Il y a deux types de helpers. Les helpers de vue et les helpers d'action. C'est probablement la différence entre tes deux répertoires.
Hors ligne