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 :

Models de 0.6 vers 1.8 [ZF 1.8]


Sujet :

MVC PHP

  1. #21
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Si la classe s'appelle My_Spaces, alors le fichier doit-être dans le répertoire /My/Spaces.php et non pas dans models, ce qui est bien le but des namespaces non ?

  2. #22
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Par défaut
    Non pas forcement.
    Tu attribut un namespace à un répertoire.

    Voici un extrait du fichier /Library/Zend/Application/Module/Autoloader.php
    Ce sont les namespace par défaut.

    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
     
    public function initDefaultResourceTypes()
        {
            $basePath = $this->getBasePath();
            $this->addResourceTypes(array(
                'dbtable' => array(
                    'namespace' => 'Model_DbTable',
                    'path'      => 'models/DbTable',
                ),
                'form'    => array(
                    'namespace' => 'Form',
                    'path'      => 'forms',
                ),
                'model'   => array(
                    'namespace' => 'Model',
                    'path'      => 'models',
                ),
                'plugin'  => array(
                    'namespace' => 'Plugin',
                    'path'      => 'plugins',
                ),
                'service' => array(
                    'namespace' => 'Service',
                    'path'      => 'services',
                ),
                'viewhelper' => array(
                    'namespace' => 'View_Helper',
                    'path'      => 'views/helpers',
                ),
                'viewfilter' => array(
                    'namespace' => 'View_Filter',
                    'path'      => 'views/filters',
                ),
            ));
            $this->setDefaultResourceType('model');
        }
    Tu vois bien que pour tes models par défaut tu as deux choix:

    Soit tes models sont sous
    /models/MonModel.php

    avec MonModel.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class Model_MonModel Extends Zend_db_Table_Abstract {
     //....
    }
    Soit tes models sont dans
    /models/DbTable/MonModel.php
    avec MonModel.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class Model_DbTable_MonModel Extends Zend_db_Table_Abstract {
     //....
    }

  3. #23
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    donc dans mon boostrap je fais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        $autoloader = Zend_Loader_Autoloader::getInstance();
            $autoloader->registerNamespace(array('My_','OLE_','Spreadsheet_','Ssh_'));
            //Zend/Application/Module/Autoloader
            $loader = new Zend_Application_Module_Autoloader(array(
                'namespace' => 'Model',
                'basePath'  => APPLICATION_PATH . '/models',
            ));
    cela devrais fonctionner non ?

    voici la réponse

    Fatal error: Class 'Model_Spaces' not found in /var/www/RdcMonGG1_8/app/controllers/SpacesController.php

    Je loupe quelque chose, mais je sais pas quoi !

  4. #24
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 215
    Par défaut
    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
    $loader = new Zend_Application_Module_Autoloader
    // Pourquoi Module_Autoloader ????
     
    Le register namespace chercher dans /library , il faut donc définir une ressource ! Et si tu nomme tes classes avec les conventions de nommage, tu auras peut-être droit à la récursivité de registering :lol:
     
    $application = new Zend_Loader_Autoloader_Resource(array(
     'basePath'      => APPLICATION_PATH . '/models',
     'namespace'     => 'Model_',
     'resourceTypes' => array(
    'all'=>array('path'=>'','namespace'=>''),
    'tables'=>array('path'=>'Tables','namespace'=>'Table'),
    'forms'=>array('path'=>'Forms', 'namespace'=>'Form')
    )))
     
    // Tes classes se nomme Model_Table_Membre par exemple, et Model_Form_Login pour un formulaire par exemple encore une fois. Si ta classe est directement contenu dans models fais des essais, j'ai jamais essayé

  5. #25
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    donc dans mon boostrap je fais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        $autoloader = Zend_Loader_Autoloader::getInstance();
            $autoloader->registerNamespace(array('My_','OLE_','Spreadsheet_','Ssh_'));
            //Zend/Application/Module/Autoloader
            $loader = new Zend_Application_Module_Autoloader(array(
                'namespace' => 'Model',
                'basePath'  => APPLICATION_PATH . '/models',
            ));
    cela devrais fonctionner non ?

    voici la réponse




    Je loupe quelque chose, mais je sais pas quoi !

    Normalement tu n'as pas besoin de mettre ceci, car le namespace "Model_" existe déjà par défaut.

    Tu peux nous montrer ton application.ini, Bootstrap.php et index.php ?

  6. #26
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Oui, mais pas avant lundi, bon wk donc

  7. #27
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bon, cela ne fonctionne toujours pas , voici les codes demandés

    Index.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
     
    // Define path to application directory
    defined('APPLICATION_PATH')
        || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../app'));
     
    // Define application environment
    defined('APPLICATION_ENV')
        || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
     
    // Ensure library/ is on include_path
    set_include_path(implode(PATH_SEPARATOR, array(
        realpath(APPLICATION_PATH . '/../library'),
        get_include_path(),
    )));
     
     
    /** Zend_Application */
    require_once 'Zend/Application.php';
     
    // Create application, bootstrap, and run
    $application = new Zend_Application(
        APPLICATION_ENV,
        APPLICATION_PATH . '/config/application.ini'
    );
     
    $application->bootstrap()
        ->run();

    Boostrap.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
     
    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
     
        protected function _initLibraryNamespaces() {
     
            $autoloader = Zend_Loader_Autoloader::getInstance();
            $autoloader->registerNamespace(array('My_','OLE_','Spreadsheet_','Ssh_'));
     
        }
     
     
        public function _initLang() {
            Zend_Session::start();
            $session = new Zend_Session_Namespace('default');
            if (! isset($session->lan)) {
                $session->lan = 'fr';
            }
     
        }
     
     
    }
    application.ini

    Code ini : 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
     
    [production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
    includePaths.library = APPLICATION_PATH "/../library"
    bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
    bootstrap.class = "Bootstrap"
    resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
    resources.layout.layoutPath = APPLICATION_PATH "/layouts/"
     
     
     
    [staging : production]
     
    [testing : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
     
    [development : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1

  8. #28
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Par défaut
    Alors deux choses:

    Tu devrais remplacer ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    protected function _initLibraryNamespaces() { 
      $autoloader = Zend_Loader_Autoloader::getInstance();
      $autoloader->registerNamespace(array('My_','OLE_','Spreadsheet_','Ssh_')); 
    }
    Par ces entrées dans ton application.ini

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    autoloaderNamespaces.0 = "My_"
    autoloaderNamespaces.1 = "OLE_"
    autoloaderNamespaces.2 = "Spreadsheet_"
    autoloaderNamespaces.3 = "Ssh_"
    Rajoute cette fonction dans ta classe de bootstrap:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    protected function _initAutoload()
        {
            $moduleLoader = new Zend_Application_Module_Autoloader(array(
                'namespace' => '', 
                'basePath'  => APPLICATION_PATH));
            return $moduleLoader;        
        }
    Bien évidement tes models devront respecter le namspace par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class Model_Monmodel extends .... {
     
    }
    et être dans le dossier /app/models/

    PS: Le truc con, mais si tu développe sous Linux fait attention c'est sensible à la case....

  9. #29
    Modérateur

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

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    yesssssssssssss, enfin ça marche, ouf......

    Merci pour le fameux coup de main.

  10. #30
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Par défaut
    De rien

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Passage du Model relationnel(Entité-Relation) Vers un model dimensionnel (DW)
    Par Koko7a dans le forum Conception/Modélisation
    Réponses: 9
    Dernier message: 01/07/2016, 23h00
  2. récupérer une variable de 'Model' vers 'Controller'
    Par salmoucha dans le forum Zend Framework
    Réponses: 4
    Dernier message: 08/04/2008, 15h56
  3. [ORM] Objet Role Modeling vers modèle relationnel.
    Par Asuki dans le forum Schéma
    Réponses: 3
    Dernier message: 21/03/2008, 00h27
  4. [Entité-Association] passage du modéle entité association vers le modele relationnel
    Par hunter99 dans le forum Schéma
    Réponses: 1
    Dernier message: 24/11/2007, 13h10
  5. access export etat vers un modele de document word
    Par dougzacker dans le forum Access
    Réponses: 6
    Dernier message: 07/03/2006, 02h01

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