2013-01-02 22 views
5

Ho appena iniziato a conoscere ZF e Firebird a causa di un progetto a cui sono assegnato. Ho cercato di stabilire la connessione tra entrambi per diversi giorni, ma non ho ancora avuto successo. Ho provato ZF con PDO_Mysql e funziona bene come Firebird connessione con PHP (fuori ZF), ma quando provo a fare la connessione con l'adattatore Firebird in ZF continua a mostrare tutti i tipi di errori.Connessione al database con l'adattatore Firebird in Zend Framework

Quindi, solo per controllare. Per rendere la connessione in ZF con Firebird dovrebbe essere fatto con l'adattatore (Firebird.php) che ho configurato in application.ini? Ho qualcosa di simile nel Application.ini:

**resources.db.adapter = "Firebird" 
resources.db.params.host = "localhost" 
resources.db.params.dbname = "C:/wamp/www/WebTH/application/data/THDATA.gdb" 
resources.db.params.username = "sysdba" 
resources.db.params.password = "masterkey"** 

errore risultante: ...Firebird.php): failed to open stream: No such file or directory in ...\Loader.php

Ho anche visto che una funzione deve essere aggiunto nella bootstrap.php. Se posso aggiungere la funzione initdb nel bootstrap.php come questo:

**protected function _initDb() 
{ 
    $this->bootstrap('config'); 
    $config = $this->getResource('config'); 
    $db = Zend_Db::factory('Firebird', array(
     'host' => $config->Database->Server, 
     'username' => $config->Database->Username, 
     'password' => $config->Database->Password, 
     'dbname' => $config->Database->DBName, 
     'adapterNamespace' => 'ZendX_Db_Adapter' 
    )); 
    return $db; 
}** 

ottengo l'errore: ...Uncaught exception 'Zend_Application_Bootstrap_Exception' with message 'Resource matching "config" not found' in ...\BootstrapAbstract.php

Mi piacerebbe sapere che cosa ne ho veramente bisogno di fare in modo da rendere i lavori di connessione . Scusa se questo è troppo ovvio, ma non sono stato in grado di trovare un caso di connessione di base specifico per Zend Framework e Firebird, quindi non sono veramente sicuro su cosa dovrei fare e dove dovrei andare.

+0

Sì, grazie per il consiglio. Stavo usando il sito per il primo quando ho posto la domanda, quindi non ho idea di come funzionasse. Lo so ora;) – Clarissa

+0

Prego :-) –

risposta

5

[Disclosure:. Non ho mai usato il Firebird db]

Come probabilmente sapete, l'adattatore Firebird non viene fornito come parte del pacchetto ZF1 nucleo. Si presenta come si può tirare da extras sotto il prefisso ZendX:

http://framework.zend.com/svn/framework/extras/trunk/library/ZendX/Db/Adapter/

rilasciare i file Firebird.php e Firebird/ in una directory library/ZendX/Db/Adapter/.

Se il application.ini utilizza le chiavi resources.db.*, quindi non v'è alcuna necessità di un metodo di _initDb() nella classe Bootstrap. Basta fare in modo di includere la chiave adapterNamespace in là, così:

resources.db.params.adapterNamespace = "ZendX_Db_Adapter_"

potrebbe anche essere necessario aggiungere il prefisso ZendX ai vostri spazi dei nomi del caricatore automatico:

autoloaderNamespaces[] = "ZendX_"

Non testato, ma qualcosa del genere dovrebbe funzionare.

+0

Ok, ora sembra funzionare. Ho aggiunto le risorse.db.params.adapterNamespace = "ZendX_Db_Adapter_" – Clarissa

+0

Ok, ora sembra funzionare. Ho aggiunto le risorse.db.params.adapterNamespace = "ZendX_Db_Adapter_" ma ha comunque restituito l'errore "Nessun file o directory", quindi quello che ho fatto è mettere due copie della stessa cartella in Zend/library> Zend e ZendX. Sembra un po 'complicato ma ora funziona ... Grazie !!! – Clarissa

+0

L'essenza è che la directory 'ZendX' deve trovarsi nel tuo' include_path' e tipicamente, la cartella 'library' è uno dei componenti' include_path'. Sono contento che ha funzionato per te. Saluti! ;-) –