2009-10-06 4 views
9

Sto cercando di utilizzare Zend Framework senza utilizzare la struttura MVC, in particolare le classi Db_Table.Utilizzo delle tabelle Db Zend Framework senza MVC

ho creato un paio di classi che rappresentano le mie tabelle di database, vale a dire

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

Quando provo a un'istanza di questa classe (è incluso bene), ottengo il seguente errore:

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

Qualcuno sa come creare e includere l'adattatore del database per le classi Db_Table da utilizzare?

Qualsiasi suggerimento è molto apprezzato! Sto usando l'ultima versione di ZF.

risposta

15

È necessario creare un Zend_Db_Adapter, che è la classe che si utilizza per connettersi al database.

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

Oppure si può utilizzare il metodo per rendere factory() esemplificazione più configurabile:

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

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

Quindi specificare l'oggetto adattatore alla classe tavolo. Ci sono almeno tre modi per farlo:

  • Impostare un difetto a livello di applicazione per tutte le tabelle:

    Zend_Db_Table_Abstract::setDefaultAdapter($db); 
    
  • Specificare l'adattatore al costruttore tavolo:

    $table = new MyTable(array('db'=>$db)); 
    
  • Archiviare l'adattatore nel registro e specificarlo nella tabella o impostarlo come predefinito:

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

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

+0

Grazie mille Bill, che ha funzionato a meraviglia! Grazie ancora – Stuart