Установка DI для нового контроллера и моделей в Phalcon

Я создаю RESTful API в Phalcon PHP, я устанавливаю 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

Благодарю.

1 ответ

Это может быть связано с тем, что вы пропустили существующий контроллер, и 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 не был указан, хотя я сомневаюсь в этом:) Опубликуйте более подробную информацию о фактической ошибке и о том, как вы конфигурируете свою модель, если она не работает.

Другие вопросы по тегам