繁体   English   中英

在Phalcon中将DI设置为新的控制器和模型

[英]Setting DI to new Controller and models in Phalcon

我正在Phalcon PHP中创建一个RESTful API,我一如既往使用以下方法设置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加载数据库信息,所以我的问题是,我该如何设置它全球信息,难道不应该让Phalcon做到吗?

数据库在主应用程序控制器中运行良好,但是我想在其他不同的子控制器中对方法进行排序,并且在某些地方数据库配置不起作用。

我正在按照文档中的说明进行操作:

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

谢谢。

这可能与您传递现有控制器并且Phalcon假设您已经设置了它有关,但是我可能错了……要找出getAction请在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有关,那将解决问题,尽管我对此表示怀疑:)发表有关实际错误以及如何配置模型(如果不起作用)的更多详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM