Je tente de stocker des itinéraires personnalisés pour Zend Framework dans la base de données. J'ai le processus vers le bas qui va créer la route, mais le problème que je rencontre est que lorsque j'ajoute les routes, il semble que Zend n'a pas encore créé sa connexion à la base de données.Force Zend Framework pour se connecter à la base de données plus tôt que d'habitude
Est-ce que quelqu'un sait où ce processus se produit initialement ou comment je peux forcer la base de données à se connecter à partir de la fonction init_routes dans Bootstrap.php?
MISE À JOUR:
Ce que je fais de Bootstrap.php appelle un modèle qui renverra tous les objets Zend_Controller_Router_Route_Static pour les vendeurs. Voici le code que je utilise l'intérieur Bootstrap.php
$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$vendor_routes = new Application_Model_Vendor();
$vendor_routes = $vendor_routes->getStaticRoutes();
Le code dans la fonction getStaticRoutes() est la suivante:
public function getStaticRoutes() {
$select = $this->select();
$select->from($this)
->where("featured = 1");
$rows = $this->fetchAll($select);
foreach($rows as $row) {
print_r($row);
}
}
Cette fonction est contenue dans un modèle qui étend Zend_Db_Table_Abstract
L'erreur que je reçois est la suivante:
<b>Fatal error</b>: Uncaught exception 'Zend_Db_Table_Exception' with message 'No adapter found for Application_Model_Vendor' in /var/www/vhosts/weddingdir/weddingdir/library/Zend/Db/Table/Abstract.php:754
Stack trace:
#0 /var/www/vhosts/weddingdir/weddingdir/library/Zend/Db/Table/Abstract.php(739): Zend_Db_Table_Abstract->_setupDatabaseAdapter()
#1 /var/www/vhosts/weddingdir/weddingdir/library/Zend/Db/Table/Abstract.php(268): Zend_Db_Table_Abstract->_setup()
#2 /var/www/vhosts/weddingdir/weddingdir/application/Bootstrap.php(17): Zend_Db_Table_Abstract->__construct()
#3 /var/www/vhosts/weddingdir/weddingdir/library/Zend/Application/Bootstrap/BootstrapAbstract.php(666): Bootstrap->_initRoutes()
#4 /var/www/vhosts/weddingdir/weddingdir/library/Zend/Application/Bootstrap/BootstrapAbstract.php(619): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('routes')
#5 /var/www/vhosts/weddingdir/weddingdir/library/Zend/Application/Bootstrap/BootstrapAbstract.php(583): Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap(NUL in <b>/var/www/vhosts/weddingdir/weddingdir/library/Zend/Db/Table/Abstract.php</b> on line <b>754</b><br />
Than ks encore!
Mon Bootstrap.php n'a pas le _initDb() à l'intérieur de celui-ci. Je suppose qu'il se connecte à la base de données quand il le faut (il le fait partout ailleurs dans l'application) mais à l'intérieur de Bootstrap ce n'est pas le cas. Je pense que c'est parce que les informations de connexion à la base de données sont stockées dans le fichier application.ini et qu'il n'a peut-être pas encore analysé ce fichier ou quelque chose. –
Le fichier application.ini est exécuté avant toutes les méthodes _init, donc cela devrait aller. Pouvez-vous publier un exemple de la manière dont vous accédez/utilisez la classe db dans votre méthode de routage? $ this-> getResource ('db'); devrait vous donner la classe DB configurée par vos données application.ini, vous pouvez donc essayer var_dump() pour voir ce que vous obtenez. –
J'ai ajouté quelques informations supplémentaires dans mon message initial. –