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