2009-10-06 8 views
9

J'essaie d'utiliser Zend Framework sans utiliser la structure MVC, en particulier les classes .Utilisation de tables Zend Framework Db sans MVC

J'ai créé deux classes représentant mes tables de base de données, à savoir

class DBTables_Templates extends Zend_Db_Table_Abstract 
{ 
    protected $_name = "templates"; 
} 

Lorsque je tente de instancier cette classe (il est inclus bien), je reçois l'erreur suivante:

Fatal error: Uncaught exception 'Zend_Db_Table_Exception' with message 'No adapter found for DBTables_Templates'

Est-ce que quelqu'un sait comment créer et inclure l'adaptateur de base de données pour les classes à utiliser?

Tous les pointeurs sont grandement appréciés! J'utilise la dernière version de ZF.

Répondre

15

Vous devez créer un Zend_Db_Adapter, qui est la classe que vous utilisez pour vous connecter à la base de données.

$db = new Zend_Db_Adapter_Pdo_Mysql(array(
    'host'  => '127.0.0.1', 
    'username' => 'webuser', 
    'password' => 'xxxxxxxx', 
    'dbname' => 'test' 
)); 

Ou vous pouvez utiliser la méthode factory() pour faire instanciation plus configurable:

$db = Zend_Db::factory('Pdo_Mysql', array(
    'host'  => '127.0.0.1', 
    'username' => 'webuser', 
    'password' => 'xxxxxxxx', 
    'dbname' => 'test' 
)); 

Voir http://framework.zend.com/manual/en/zend.db.html#zend.db.adapter.connecting

Indiquez ensuite cet objet adaptateur à votre classe de table. Il y a au moins trois façons de le faire:

  • Définir un défaut d'application à l'échelle pour toutes les tables:

    Zend_Db_Table_Abstract::setDefaultAdapter($db); 
    
  • Spécifiez l'adaptateur au constructeur de table:

    $table = new MyTable(array('db'=>$db)); 
    
  • Stockez l'adaptateur dans le registre et spécifiez-le dans la table ou définissez-le par défaut:

    Zend_Registry::set('my_db', $db); 
    $table = new MyTable(array('db'=>'my_db')); 
    // alternatively: 
    Zend_Db_Table_Abstract::setDefaultAdapter('my_db'); 
    

Voir http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.constructing

+0

Merci beaucoup Bill, qui a travaillé un régal! Merci encore – Stuart