2012-01-28 5 views
0

Je suis en train de jouer avec zend framework 1.11 et mongo. J'ai décidé d'utiliser Shanty_Mongo comme bibliothèque pour quelques facile Zend et Mongo, mais je suis coincé dans cette exception:Shanty_Mongo et Zend Framework 1.11

Impossible de sauvegarder Documet. Le document est pas connecté à un db et collection

Voici le code dans le contrôleur:

public function indexAction() 
    { 
     try { 
      $guestbook = new Application_Model_Guestbook(); 
      $guestbook->setComment('Commento di prova') 
       ->setEmail('[email protected]') 
       ->save(); 
      $all_elements = Application_Model_Guestbook::all(); 
      $this->view->entries = $all_elements; 
     } catch (Exception $exc) { 
      echo $exc->getMessage(); 
     } 
    } 

C'est (en partie) du modèle:

class Application_Model_Guestbook extends Shanty_Mongo_Document 
{ 
     protected static $_db = 'test'; 
     protected static $_collection = 'user'; 

     protected $_comment; 
     ..... 

Shanty est dans mon dossier de la bibliothèque, et application.ini je l'ai ajouté:

resources.view[] = 
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/" 
autoloaderNamespaces[] = "Shanty" 

Sur les docs Shanty-Mongo, il est signalé que

"Si vous vous connectez à localhost sans aucune authentification, vous n'avez plus à vous soucier des connexions. Shanty Mongo se connectera automatiquement à la première demande si aucune connexion n'a été préalablement ajouté. »

mais cela ne se produit pas .. Je ne peux pas deviner pourquoi. De toute évidence, mongo est en cours d'exécution, car si je l'utilise php Mongo() je peux accéder et effectuer des insertions, etc ...

Je suis en cours d'exécution de la dernière version de mongo, zend sur php 5.3.6 sur Mac OS X 10.6.8 Merci!

Répondre

0

Je pense vous voudrez peut-être changer cette ligne autoloaderNamespaces [] = "Shanty" pour être:

autoloaderNamespaces[] = 'Shanty_Mongo' 

Autre que cela, il semble OK ....

+0

J'ai tryed aussi, même si cela n'a pas de sens pour moi parce qu'il en fait charge librairie shanty .. de toute façon je l'ai encore essayé maintenant et malheureusement pas de succès à nouveau .. je reçois toujours la même erreur :( Merci quand même! –

0

C'est un message d'erreur étrange. Notez qu'il ne dit pas "incapable de se connecter à MongoDB" ou similaire. Il dit que ce document n'est pas connecté à une collection. Cela ressemble à un problème de configuration pour moi.

Dans d'autres zones de votre code, êtes-vous en mesure de vous connecter à la base de données?

Lire à partir de la base de données?

+0

Salut Steve, merci pour votre réponse.J'ai écrit cela comme un test, donc je n'ai pas d'autre accès à db à partir d'autres points de mon code, si vous voulez dire "peut y reusfullu je me connecte à mongo d'une autre manière ", en fait je peux écrire/lire à Mongo en utilisant le pilote php .. comme test, j'ai copié et collé le code sur http://www.php.net/manual/fr/ mongo.tutorial.php et il a travaillé avec succès. –

0

Allesio,

l'élément que vous et Adam C ont mis sur le tableau autoloaderNamespaces ne sont pas tout à fait correct. Essayez ce qui suit:

autoloaderNamespaces[] = "Shanty_" 

Vous devez uniquement mettre le préfixe de niveau supérieur suivi d'un trait de soulignement. S'il vous plaît laissez-moi savoir si cela ne résout pas la situation. En outre, je n'ai pas vu ce message d'erreur avant. Bien sûr, si vous avez une installation locale de mongoDB en cours d'exécution, vous n'aurez besoin de spécifier aucun paramètre d'authentification. Si la collection n'existe pas, Shanty la créera et si le document n'existe pas, Shanty le créera également.

Quel système d'exploitation utilisez-vous?

J'ai eu un certain nombre de problèmes avec le paquet dans les dépôts Ubuntu. Cependant, ajouter le dépôt 10gen à apt et installer la dernière version stable m'a aidé. Bien que même cela semble s'écraser périodiquement.

+0

Bonjour Matt, merci pour votre aide !!! J'ai essayé comme vous l'avez suggéré, mais cela n'a pas fonctionné. Je suis sûr que Shanty est correctement chargé, car le message d'exception est en code Shanty, en particulier dans le document, à la ligne 907. Voilà ma configuration en détail: Je suis en php 5.3.6 sur Mac OS X 10.6.8 mongo est en cours d'exécution, fichiers db sont sur ma racine hd (/ data/db) fichiers du projet sont sur/volumes/données/Sites/test /, url du projet est test.local Je ne peux pas vraiment comprendre pourquoi Shanty ne peut pas se connecter à elle .. –

1

Votre modèle doit être comme ça

class Application_Model_Guestbook extends Shanty_Mongo_Document 
{ 
    protected static $_db = 'test'; 
    protected static $_collection = 'user'; 
    protected static $_requirements = array('comment'=>'Required') 
0

Essayez d'ajouter ceci à Bootstrap.php:

protected function _initMongoDB() { 
    $connection = new Shanty_Mongo_Connection('mongodb://localhost:27017'); 
    Shanty_Mongo::addMaster($connection); 
    } 
Questions connexes