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

Autres composants PHP Discussion :

Autoloader sous Drupal


Sujet :

Autres composants PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut Autoloader sous Drupal
    Bonjour,

    Je suis en pleine phase de test d'intégration entre Drupal et le Zend Framework pour développer des modules, en utilisant Zend_Db par exemple pour un stockage des données du module sous sqlite. Juste un test pour me stimuler les neurones, ne venez pas me dire que ce serait aussi vite fait en utilisant l'API de Drupal.

    Mon plus gros problème a été de mettre en place le Zend_Loader_Autoloader, ce que j'ai réussi en bidouillant pas mal.

    Si quelqu'un a déjà utilisé l'auto-chargement du ZF sous Drupal, je serais intéressé par savoir comment.

    D'avance merci,

    SNAFU

  2. #2
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    La bidouille en question.

    Mon module est situé dans sites/all/modules/mymodule

    Hiérarchie de ce module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    mymodule.info
    mymodule.module
    db.sqlite3 (la base sqlite)
    models/ (dossier des modèles)
    models/dao/ (dossier pour les modèles de tables)
    views/ (dossier des vues)
    Un fichier models/Loader.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
    <?php
    class Model_Loader {
     
        public function __construct() {
            require_once('Zend/Loader/Autoloader.php');
            Zend_Loader_Autoloader::getInstance();
            $resourceLoader = new Zend_Loader_Autoloader_Resource(array(
                'basePath'  => dirname(__FILE__).'/..',
                'namespace' => '',
            ));
            $resourceLoader ->addResourceType('model', 'models', 'Model');
            $resourceLoader ->addResourceType('dao', 'models/dao', 'Model_Dao');
     
            $options = array('dbname'=>DBNAME);
            $db = Zend_Db::factory('PDO_SQLITE', $options);
            Zend_Db_Table_Abstract::setDefaultAdapter($db);
        }
    }
    Et dans mon fichier mymodule.module, je fais ça en première ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    require_once('models/Loader.php');
    $loader = new Model_Loader();
    Ca met bien en place le chargement automatique souhaité, mais c'est vraiment moche !

  3. #3
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Salut,

    Ce serait aussi vite fait en utilisant l'API de Drupal!


    Il existe un module drupal pour intégrer ZF, je ne l'ai pas testé mais peut-être que ça répond à ton besoin...
    http://drupal.org/project/zend

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par manuscle Voir le message
    Salut,

    Ce serait aussi vite fait en utilisant l'API de Drupal!


    Il existe un module drupal pour intégrer ZF, je ne l'ai pas testé mais peut-être que ça répond à ton besoin...
    http://drupal.org/project/zend
    Oué, je l'ai regardé mais il n'utilise pas vraiment l'autoloader. Il s'agit a priori d'une façon de charger des classes via une fonction zend_initialize.
    Pô classe non plus...

  5. #5
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    PS : J'ai aussi pensé à lancer l'autoloader directement dans le index.php de Drupal, mais ce n'est pas moins bourrin.

  6. #6
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    A l'époque de ZF1.8 j'utilisais cette methode dans mon bootstrap:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // ATTENTION C'EST DU COPIER COLLER A L'ARRACHE
     
    // configuration de l'include_path PHP pour l'autoload
    set_include_path(get_include_path() . PATH_SEPARATOR . dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR  . 'library');
     
    // Chargement automatique des classes
    require_once 'Zend/Loader.php';
    Zend_Loader::registerAutoload();
    Du coup si tu crée un premier module perso qui charge juste ZF comme ceci, tu pourras créer autant de modules dépendants de celui-ci et faisant moulte choses diverses et variées...
    Attention j'ai pas testé chez moi donc je ne suis pas sûr que ça fonctionne...

Discussions similaires

  1. [Drupal] Theming nouvelle discussion sous Drupal 7
    Par fperroud dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 08/10/2012, 00h14
  2. [Drupal] module sous drupal 7
    Par adnen07 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 09/08/2012, 14h10

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