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

MVC PHP Discussion :

Chargement automatique de ses propres classes [ZF 1.9]


Sujet :

MVC PHP

  1. #1
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut Chargement automatique de ses propres classes
    Bonjour,

    Je suis en train de créer un site web avec zend framework.
    Voici la structure :
    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
    application
    --configs
    --controllers
    --models
    --modules
    ----content
    ------controllers
    --------ItemController.php
    ------forms
    --------Item.php
    ------models
    ------views
    --views
    --Bootstrap.php
    Le fichier Item.php contient :
    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
     
    <?php
     
    class Form_Item extends Zend_Form
    {
        public function init()
        {
            $this->setMethod('post');
     
            $this->addElement('textarea', 'comment', array(
                'label'      => 'Please Comment:',
                'required'   => true,
                'validators' => array(
                    array('validator' => 'StringLength', 'options' => array(0, 20))
                    )
            ));
     
            $this->addElement('submit', 'submit', array(
                'ignore'   => true,
                'label'    => 'Sign Guestbook',
            ));
     
        }
    }
    Dans le fichier ItemController.php je créé une instance de ma classe Form_item mais pour que sa marche je dois faire un require_once du fichier Item.php

    Comment je peux faire pour que je n'ai pas besoin d'utiliser require_once ? sachant que j'utilise Zend_Application

    Merci d'avance pour votre réponse.

  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 600
    Points
    12 600
    Par défaut
    Poue être sûr de reprendre arborescente de ZF, il faut que dans ton bootstrap.php, tu dois avoir un _init comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        protected function _initAutoload() {
            $autoloader = new Zend_Application_Module_Autoloader(array(
                            'namespace' => '',
                            'basePath' => APPLICATION_PATH
            ));
            return $autoloader;
        }

  3. #3
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    ok merci,

    et par exemple la classe qui se trouve dans le fichier Item.php doit se nommer comment ? Form_Item, Content_form_Item, Module_Content_form_Item ?

  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 600
    Points
    12 600
    Par défaut
    Désolé, je n'avais pas vu que tu étais dans un architecture modulaire, dans ton cas je dirais

    Mais en même temps dans le cas d'un module, je préfère créer mes classes perso dans /library/My/

    Pour ce faire dans le config.ini , j'ajoute la ligne suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    autoloadernamespaces[] = "My_"
    ensuite je crée les répertoires /library/My/Form et j'y mettrais le fichier Item.php, la classe se nommerais donc


  5. #5
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Du cout si je fait comme tu dit, mes classes perso, sa veut dir que je met jamais rien dans mes dossiers forms et models ? c'est pas très mvc non ?

  6. #6
    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 600
    Points
    12 600
    Par défaut
    Je ne parle que de form, et si cela respecte bien les convention ZF, regarde rux ils ont bien un dossier ZEND

  7. #7
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    J'ai bien rajouté dans le bootstrap :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     protected function _initAutoload() {
            $autoloader = new Zend_Application_Module_Autoloader(array(
                            'namespace' => '',
                            'basePath' => APPLICATION_PATH
            ));
            return $autoloader;
        }
    mais quand j'enlève la ligne suivante dans le controleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    require_once '../application/modules/content/forms/Item.php';
    J'obtient comme message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Class 'Content_Form_Item' not found in D:\Zend workspace\project1\application\modules\content\controllers\ItemController.php on line 12

  8. #8
    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 600
    Points
    12 600
    Par défaut
    Je peux voir le config.ini

  9. #9
    Membre du Club Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Points : 56
    Points
    56
    Par défaut
    Enfaite j'ai trouvé, il fallait que je mette en place un bootstrap dans le dossier content :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class Content_Bootstrap extends Zend_Application_Module_Bootstrap {
     
    }
    Merci pour votre aide

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

Discussions similaires

  1. Créer ses propres classes génériques
    Par Louis-Guillaume Morand dans le forum C#
    Réponses: 6
    Dernier message: 22/05/2009, 16h57
  2. Définir ses propres pseudo-classes CSS
    Par sliderman dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 01/08/2008, 17h30
  3. Utiliser ses propres classes avec Zend Framework
    Par Adinsx dans le forum Zend Framework
    Réponses: 3
    Dernier message: 28/02/2008, 20h01
  4. Tutos pour écrire ses propres classes/packages
    Par rod59 dans le forum Articles
    Réponses: 4
    Dernier message: 24/05/2007, 09h46

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