我正在尝试在我的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
但是,当我只有一个默认连接设置时,它可以正常工作。还有其他人遇到过这个问题吗?
- UPDATE-- 我从异常中查看堆栈跟踪,发现问题是由我在我的文件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行唯一的事情是});所以我仍然不确定为什么会导致错误。
答案 0 :(得分:1)
看来我被Li3的Simple Authentication user tutorial误导了。在他们的教程中,它让你在bootstrap目录中创建一个user.php文件,并在这个文件中有过滤器逻辑(正是我所拥有的)。然而,似乎这不是最好的方法,特别是在使用多个连接时,因为它会引发上面的异常。我已将过滤器逻辑移到app / models / Users.php中的Users模型文件中,不再获得异常。这与Gavin Davies在Li3 Authentication example中使用的设置类型相同。