Я пытаюсь настроить несколько соединений в моем проекте li3, но когда я это делаю, я получаю необработанное исключение. Я устанавливаю свои соединения в файле app / confi / bootstrap / connections.php, который затем загружается в файл bootstrap.php. Вот что у меня есть для моих связей:
Connections::add('default', array(
'development' => array(
'type' => 'MongoDb',
'host' => 'localhost',
'database' => 'web_app'
),
'test' => array(
'type' => 'MongoDb',
'host' => 'localhost',
'database' => 'test_web_app'
)
)
);
Когда я настраиваю его так и пытаюсь перейти к своему проекту, я получаю эту ошибку:
Fatal error: Uncaught exception 'lithium\core\ConfigException' with message 'No adapter set for configuration in class `lithium\data\Connections`.' in /var/www/site/libraries/lithium/core/Adaptable.php:233
Однако, когда у меня только одна настройка соединения по умолчанию, она работает нормально. Кто-нибудь еще сталкивался с этим вопросом?
—ОБНОВИТЬ—
Я просмотрел трассировку стека из исключения и обнаружил, что проблема вызвана фильтром, который я установил в моем файле app / config / bootstrap / user.php, который затем загружается в bootstrap.php
Вот как выглядит мой файл user.php:
use app\models\Users;
use lithium\security\Password;
Users::applyFilter('save', function($self, $params, $chain) {
if ($params['data']) {
$params['entity']->set($params['data']);
$params['data'] = array();
}
if (!$params['entity']->exists()) {
$params['entity']->password = Password::hash($params['entity']->password);
}
return $chain->next($self, $params, $chain);
});
Согласно трассировке стека ошибка поступает из строки 21 этого файла. Единственное, что есть в строке 21 — это}); поэтому я до сих пор не уверен, почему это вызывает ошибку.
Похоже, меня ввели в заблуждение Ли3 Руководство пользователя по простой аутентификации. В их уроке он создает файл user.php в каталоге начальной загрузки и содержит в этом файле логику фильтра (именно то, что у меня было). Однако кажется, что это не лучший способ сделать это, особенно при использовании нескольких соединений, так как это вызовет исключение выше. Я переместил логику фильтра в файл модели Users в app / models / Users.php и больше не получаю исключение. Это тот же тип установки, который Гэвин Дэвис использует в своем Пример аутентификации Li3.
Других решений пока нет …