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

Plugins PHP Discussion :

[sfMondongoPlugin] avec symfony 1.4.9


Sujet :

Plugins PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 29
    Points : 20
    Points
    20
    Par défaut [sfMondongoPlugin] avec symfony 1.4.9
    Bonjour tout le monde;
    voici mon problème, je veux travailler avec mongodb et symfony 1.4.9..
    pour ce faire j'ai essayé d'intégrer le plugin sfMondongoPlugin avec mon projet en suivant ce tuto:
    http://mondongo.es/documentation/1.0...ongo-plugin/en
    alors pour commencer j'ai mis mes connections dans le fichier databases.yml ( doctrine pour l'ORM et mondongo pour l'ODM), j'aimerais bien si j'ai fait une faute en ceci..
    la seconde chose est que j'ai ajouté un autre dossier sous config, et j'ai crée un fichier shema.yml et mis le contenu indiqué dans le lien..
    alors en exécutant : (sachant que je suis sous windows) j'ai eu une erreur
    PHP Warning: require_once(C:\Users\NASA\Documents\NetBeansProjects\MongoDBproject\plugins\sfMondongoPlugin\config/../lib/vendor/mondongo/lib/vendor/symfony/src/Symfony/Component/HttpFoundation/UniversalClassLoader.php): failed to open stream: No such file or directory in C:\Users\NASA\Documents\NetBeansProjects\MongoDBproject\plugins\sfMondongoPlugin\config\sfMondongoPluginConfiguration.class.php on line 37
    en faisant une petite recherche j'ai trouvé ceci " Mondongo uses namespaces and class names standards in PHP 5.3, and includes the UniversalClassLoader of Symfony2."
    alors c'est comme si le plugin est supposé travailler avec symfony2 si je ne me trompe pas..

    merci d'avance pour votre aide

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Momdongo est inclus dans doctrine2 qui est livré avec Symfony 2, donc, oui, il tourne avec Symfony 2.

    Par contre, un sfMondongoPlugin est lui manifestement un plugin pour symfony 1.4. Et devrait donc tourner avec.

    Par contre tes explications sont un peu confuses. Notamment tu demandes : "j'aimerais bien si j'ai fait une faute en ceci.." mais sans mettre la moindre ligne de code à examiner, difficile de savoir si ce que tu as fais est correcte...

    Par contre, plus loin tu donnes un message d'erreur qui me parle un peu plus. A priori, le "UniversalClassLoader" n'arrive pas a trouver et charger "sfMondongoPluginConfiguration".

    Question : As-tu bien récupéré et installé le plugin ? L'as-tu activé dans la configuration de l'application ? Quant tu lances une commande "symfony" en CLI et sans arguments, as-tu bien les commandes mondongo qui s'affichent ?
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    Bonjour,
    en fait je voulais dire j'aimerais bien savoir si j'ai fait une erreur dans ceci..
    je vais essayer d'être plus claire:
    j'ai mis mon plugin sous plugins du projet, j'ai aussi ajouté cette ligne dans le fichier ProjectConfiguration.class.php:
    $this->enablePlugins('sfMondongoPlugin');

    j'ai aussi ajouté la connexion à ma base MongoDB, voici le contenu du fichier databases.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    all:
      doctrine:
        class: sfDoctrineDatabase
        param:
          dsn:      mysql:host=localhost;dbname=MongoBDproject
          username: root
          password:
     
     
      mondongo:
        class: sfMondongoDatabase
        param:
          server:   mongodb://localhost:27017
          database: my_database
    à la réponse à votre dernière question, non je n'ai aucune commande Mondongo s'affichant quand je tape symfony.. c'est là où je me suis bloquée et où j'ai eu le message d'erreur m'indiquant que l'absence du fichier UniversalClassLoader.php

  4. #4
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Je n'ai pas beaucoup plus d'idées.

    Je ne sais pas si le plugin est sensé afficher des messages dans le CLI, mais s'il doit le faire, le fait qu'il ne le fait pas est preuve qu'il n'est pas reconnu par l'application.

    Par contre, si la ligne enabledPlugin est présente et ne génère pas d'erreur c'est qu'il est bien chargé.

    Ce qui est en contradiction avec la conclusion précédente.

    Je vérifierais que la ligne enabledPlugin est bien exécutée dans un premier temps.

    Ensuite il est aussi possible de regarder dans cache/devOuProd/config/config_autoload.yml.php sir le module est bien vu par l'autoload, mais d'un autre côté, s'il n'était pas vu, il ne se chargerait pas et il y aurait une erreur...
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    Bonjour,
    voilà c'est ce que j'ai trouvé dans le fichier config_autoload.yml.php (son début)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    // auto-generated by sfAutoloadConfigHandler
    // date: 2011/02/26 14:34:44
    return array(
     
      // sfMondongoPlugin_module_libs
     
      // sfDoctrinePlugin_module_libs
     
      // sfDoctrinePlugin_lib
    bien sur avec plain d'autres lignes

  6. #6
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Y a-t-il quelque chose de supprimé dans cet extrait, entre le lignes de commentaires ?
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    non pas du tout

  8. #8
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    C'est ce que je craignais comme réponse.

    Soit il ne voit pas les fichiers du plugin, soit il n'est pas capable de créer les routes.

    Vérifie que le plugin est bien physiquement installé.
    Vérifie que la ligne dans le fichier de configuration (enablePlugin() ) est bien prise en compte.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    le plugin est bel et bien sous plugins du projet, et enabled dans le fichier de configuration..
    comment je peux m'assurer que ceciest bien pris en compte???

    à part ceci j'aimerais bien savoir si mon fichier databases.yml est valide ( connexion à la base relationnelle et connexion à la base de documents)

  10. #10
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Actuellement, l'autoload ne reconnait pas le plugin et n'intègre pas ces modules dans son travail d'autoload.

    Donc, le plugin n'est pas pris en compte. Ce que dément l'absence de message d'erreur lors de l'initialisation de l'application. Il me semble que c'est le premier problème à régler.

    Soit tu as un xdebug en place et tu peux mettre un point d'arrêt sur la ligne enabled du plugin.

    Soit tu met juste avant un "echo 'coucou';" et derrière un "echo 'titi';" et tu vérifie sur l'écran qu'ils soient bien pris en compte.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  11. #11
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    Bonsoir,
    j'ai fait un affichage avant et après la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo "titi";
            $this->enablePlugins('sfMondongoPlugin');
            echo "totoooooooo";
    on m'affiche les deux messages à la console.

    j'ai fait un autre affichage dans la classe sfMondongoPluginConfiguration.class.php, je vais vous fournir tous le code de cette classe:
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    <?php
     
     
    class sfMondongoPluginConfiguration extends sfPluginConfiguration
    {
      protected $logs = array();
     
      /**
       * @see sfPluginConfiguration
       */
      public function initialize()
      {
         echo"coucou";
        require_once(dirname(__FILE__).'/../lib/vendor/mondongo/lib/vendor/symfony/src/Symfony/Component/HttpFoundation/UniversalClassLoader.php');
     
        $loader = new Symfony\Component\HttpFoundation\UniversalClassLoader();
        $loader->registerNamespaces(array(
          'Mondongo\\Extension\\Extra' => sfConfig::get('sf_mondongo-extensions_lib_dir', dirname(__FILE__).'/../lib/vendor/mondongo-extensions-extra/lib'),
          'Mondongo' => sfConfig::get('sf_mondongo_lib_dir', dirname(__FILE__).'/../lib/vendor/mondongo/lib')
        ));
        $loader->register();
     
        $this->dispatcher->connect('context.load_factories', array($this, 'listenToContextLoadFactories'));
     
        $this->dispatcher->connect('component.method_not_found', array($this, 'listenToComponentMethodNotFound'));
      }
     
      /**
       * Listen to context.load_factories event.
       *
       * Initialize the Mondongo.
       *
       * @param sfEvent $event The event object.
       *
       * @return void
       */
      public function listenToContextLoadFactories(sfEvent $event)
      {
        $context = $event->getSubject();
     
        $mondongo = new Mondongo\Mondongo();
     
        // databases
        $databaseManager = $context->getDatabaseManager();
        foreach ($databaseManager->getNames() as $name)
        {
          $database = $databaseManager->getDatabase($name);
          if ($database instanceof sfMondongoDatabase)
          {
            $mondongo->setConnection($name, $database->getMondongoConnection());
          }
        }
     
        // log
        if (sfConfig::get('sf_logging_enabled'))
        {
          $mondongo->setLoggerCallable(array($this, 'log'));
     
          if (sfConfig::get('sf_web_debug'))
          {
            $this->dispatcher->connect('debug.web.load_panels', array($this, 'listenToDebugWebLoadPanels'));
          }
        }
     
        // context
        $context->set('mondongo', $mondongo);
     
        // container
        Mondongo\Container::setDefault($mondongo);
      }
     
      /**
       * Listen to component.method_not_fount event.
       *
       * Returns the Mondongo in actions and components: $this->getMondongo()
       *
       * @param sfEvent $event The event.
       *
       * @return bool If it returns the Mondongo.
       */
      public function listenToComponentMethodNotFound(sfEvent $event)
      {
        if ('getMondongo' == $event['method'])
        {
          $event->setReturnValue($event->getSubject()->getContext()->get('mondongo'));
     
          return true;
        }
     
        return false;
      }
     
      /**
       * Returns the logs.
       *
       * @return array The logs.
       */
      public function getLogs()
      {
        return $this->logs;
      }
     
      /**
       * Save a mondongo log.
       *
       * @param array $log The log.
       *
       * @return void
       */
      public function log(array $log)
      {
        $this->dispatcher->notify(new sfEvent('sfMondongo', 'application.log', array('sfMondongo')));
     
        $this->logs[] = $log;
      }
     
      /**
       * Listen to debug.web_load_panels event.
       *
       * @param sfEvent $event The event.
       *
       * @return void
       */
      public function listenToDebugWebLoadPanels(sfEvent $event)
      {
        $event->getSubject()->setPanel('mondongo', new sfMondongoWebDebugPanel($event->getSubject()));
      }
    }
    coucou est affiché à l'entrée dans la méthode intialize(), et non au delà de cette place..
    le problème est avec la classe UniversalClassLoader qui n'existe pas dans symfony1.4.9.. j'ai lu que je dois la remplacer par une autre classe loader dans ce lien http://mondongo.es/documentation/1.0.../configuration amis vu que je suis encore novice avec symfony je ne sais pas comment le faire..

    merci

  12. #12
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Ton lien semble inactif.

    Par contre ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once(dirname(__FILE__).'/../lib/vendor/mondongo/lib/vendor/symfony/src/Symfony/Component/HttpFoundation/UniversalClassLoader.php');
    dans un plugin me semble des plus fantaisiste. En effet, la HttpFoudation devrait être prise en charge par l'autoload et je ne vois absolument pas pourquoi le plugin ce mettrait à la charger seul.

    Surtout avec un chemin aussi étonnant et peu probable. A moins que le plugin n'embarque en son sein une partie du code de symfony, ce qui me semblerait encore plus surprenant.

    Je pense que l'on part là pour une réécriture partiel du plugin.

    Regardes s'ils n'annoncent pas prochainement une version mise à jour... S'ils donnent une solution sur leur site, c'est qu'ils doivent prévoir une mise à jour, non ?
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  13. #13
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    Bonsoir;
    je vais reposter le lien pour que tu puisses le consulter
    http://mondongo.es/documentation/1.0.../configuration
    ce qui est l'important dans cette page est cette partie au cas où tu ne peux pas encore la visualiser:
    Classes loader

    Mondongo uses namespaces and class names standards in PHP 5.3, and includes the UniversalClassLoader of Symfony2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    require('/path/to/mondongo/lib/vendor/symfony/src/Symfony/Component/HttpFoundation/UniversalClassLoader.php');
     
    $loader = new \Symfony\Component\HttpFoundation\UniversalClassLoader();
    $loader->registerNamespace('Mondongo', '/path/to/mondongo/lib');
    $loader->register();
    You can use any class loader that implements the standards in PHP 5.3.
    J'ai demandé au développeur même du plugin de me fournir une explication concernant ce problème et je suis entrain d'attendre une réponse.

  14. #14
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    Bonjour,
    il s'est avéré que le plugin que j'ai téléchargé de GIT avait un problème! j'ai changé de lien de téléchargement et ça a marché sur Windows et encore mieux avec Ubuntu.
    je poste ce messahe au cas où d'autres personnes feront face au même problème.
    merci beaucoup Michel Rotta pour ton aide

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

Discussions similaires

  1. [1.x] Validation conditionnelle avec Symfony
    Par MacReiben dans le forum Symfony
    Réponses: 1
    Dernier message: 17/07/2008, 13h25
  2. [1.x] Problème de génération de model propel avec symfony 1.1
    Par youknowriad dans le forum Symfony
    Réponses: 2
    Dernier message: 04/07/2008, 16h13
  3. [1.x] Message d'erreur avec symfony propel-build-model
    Par thewind1 dans le forum Symfony
    Réponses: 6
    Dernier message: 03/04/2008, 18h09
  4. [1.x] Retours d'expérience avec Symfony
    Par ygrim dans le forum Symfony
    Réponses: 6
    Dernier message: 05/09/2007, 15h13

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