2014-05-06 69 views
0

我在PHP爾康創建一個RESTful API,因此我設置了DI和往常一樣使用該數據庫的信息:設置DI新的控制器和模型爾康

這是我如何配置在該數據庫DI。

use Phalcon\Db\Adapter\Pdo\Postgresql as DbAdapter; 
$di = new FactoryDefault(); 

$di['db'] = function() use ($config) { 
return new DbAdapter(array(
      "host" => $config->database->host, 
      "username" => $config->database->username, 
      "password" => $config->database->password, 
      "dbname" => $config->database->dbname, 
      "schema" => $config->database->schema, 
     )); 
}; 

然後設置DI

$app->setDi($di); 

而且我處理這樣的動作:

//Gets a client information 
$app->get('/client', array(new ClientController, 'getAction')); 

的問題是,當ClientController創建一個新的模型對象它只是返回錯誤說沒有找到該表,我認爲是因爲它沒有從DI加載數據庫信息,所以我的問題是,如何在全局範圍內設置這些信息,是不是認爲Ph愛爾康呢?

數據庫在主應用程序控制器中工作正常,但我想要在其他不同子控制器中的方法,並且數據庫配置不起作用。

我這樣做是因爲文檔中所述:

http://docs.phalconphp.com/es/latest/reference/micro.html

感謝。

+0

你是如何在配置和DI中配置'db'服務的? –

回答

0

這可能與您通過現有控制器的事實有關,並且Phalcon假定您已經設置了它,但我可能是錯誤的......要找出,請在getAction檢查$ di是否已設置:

public function getAction() 
{ 
    echo isset($this->di) ? 'di is set' : 'di is not set'; 
} 

如果它沒有設置,這時你可以手動配置路由前設置:

$controller->setDI($app->di); 
$app->get('/client', array($controller, 'getAction')); 

,如果它是與DI做不指定這將解決這個問題,但我對此表示懷疑:)發佈有關實際錯誤的更多細節以及如何配置如果這不起作用,你的模型。