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

Zend Framework PHP Discussion :

Classes personnalisées et chargement... [ZF 1.7]


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut Classes personnalisées et chargement...
    J'essaye de suivre ce tuto http://www.itanea.com/blog/2008/05/0...zend-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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    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.

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Tout d'abord je te conseille de suivre les conventions de nommage utilisées par Zend : http://framework.zend.com/manual/fr/...nventions.html

    C'est à dire qu'une classe Myapp_LoginForm doit se trouver dans un fichier LoginForm.php lui-même dans un répertoire Myapp.

    Si tu nommes ta classe LoginForm, alors il suffit de la mettre dans un fichier LoginForm.php.

    Pour l'emplacement de ce fichier, il existe plusieurs écoles. Certains le mettent dans le répertoire models, une partie des formulaires relevant de cette partie (notamment les validateurs), d'autres créent un répertoire 'forms' dans la branche 'application' (donc à côté de models ou controllers).

    Pour le chargement de cette classe, le plus simple si tu respectes les conventions, c'est de mettre le répertoire racine des formulaires dans l'include_path de PHP (models y est normalement déjà, mais si tu choisis de créer un répertoire forms, il faut l'ajouter), et d'utiliser l'autoloader du ZF en ajoutant simplement ces deux lignes dans le bootstrap :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    include "Zend/Loader.php";
    Zend_Loader::registerAutoload();
    Après ça, plus besoin d'include, les fichiers contenant tes classes seront automatiquement chargés !

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    Merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Zend_Controller_Action_HelperBroker::addPrefix('../application/default/helpers');
    Et ma classe qui est comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    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

  5. #5
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Pourquoi ne pas mettre ton aide d'action dans le répertoire library ?

    Si tu avais une aide MyApp_Helpers_Profile située dans library/MyApp/Helpers/Profile.php, tu devrais pouvoir l'utiliser en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Zend_Controller_Action_HelperBroker::addPrefix('MyApp_Helpers');
    Si tu préfères conserver ton aide dans application/default/helpers/Profile.php, tu dois pouvoir appeler ta classe Helpers_Profile et paramétrer le broker comme suit (non testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Zend_Controller_Action_HelperBroker::addPath('../application/default/helpers', 'Helpers');

  6. #6
    Membre éclairé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Zend_Controller_Action_HelperBroker::addPath('../application/default/helpers', 'Helpers');
    et on appelle comment nos méthode ?
    exemple :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
     
    <?php
    /**
     *
     * @author dev
     * @version 
     */
    require_once 'Zend/Loader/PluginLoader.php';
    require_once 'Zend/Controller/Action/Helper/Abstract.php';
     
    /**
     * MyHelper Action Helper 
     * 
     * @uses actionHelper Zend_Controller_Action_Helper
     */
    class Zend_Controller_Action_Helper_MyHelper extends Zend_Controller_Action_Helper_Abstract
    {
    	/**
    	 * @var Zend_Loader_PluginLoader
    	 */
    	public $pluginLoader;
     
    	/**
    	 * Constructor: initialize plugin loader
    	 * 
    	 * @return void
    	 */
    	public function __construct()
    	{
    		// TODO Auto-generated Constructor
    		$this->pluginLoader = new Zend_Loader_PluginLoader ( );
    	}
     
    	/**
    	 * Strategy pattern: call helper as broker method
    	 */
    	public function direct()
    	{
    		echo 'toto';
    		// TODO Auto-generated 'direct' method
    	}
    	public function toto()
    	{
    		echo 'toto';
    		// TODO Auto-generated 'direct' method
    	}
    }
    J'appelle toto ainsi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $this->toto();
    ainsi je l'appelle dans le contrôleur ou la vue ?

    Merci

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 18/01/2009, 18h16
  2. Graphique et classe personnalisée
    Par couetbis dans le forum iReport
    Réponses: 0
    Dernier message: 16/04/2008, 10h21
  3. Find() avec predicate sur classe personnalisée
    Par Ivynox dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/02/2008, 11h21
  4. Réponses: 3
    Dernier message: 23/05/2007, 12h35

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