Всем привет. Сделал динамический провайдер компонентов по гайду Дмитрия Елисеева (
https://elisdn.ru/blog/100/active-record-dynamic-db). В гайде рассматривается пример с подключением к разным базам данных в зависимости от пользователя. У меня немного другой формат, т.е подключение зависит от города. В общем все настроил и все прекрасно работает. За исключением RBAC. Т.е данные о ролях пользователей тянутся из основного подключения, потому что в классе DbManager, переменная public $db = 'db'; берет за основу компонент db, но ее можно переопределить из описания
/**
* var Connection|array|string the DB connection object or the application component ID of the DB connection.
* After the DbManager object is created, if you want to change this property, you should only assign it
* with a DB connection object.
* Starting from version 2.0.2, this can also be a configuration array for creating the object.
*/
public $db = 'db';
В конфиге
return [
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=cg77777_db',
'username' => 'cg77777_db',
'password' => 'asdasd',
'charset' => 'utf8',
],
'dynamicServiceLocator' => [
'class' => 'general\components\DynamicServiceLocator',
'activeCity' => [
'class' => 'general\components\ActiveCity',
'default' => 0,
],
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=cg77777_{city}',
'username' => 'cg77777_{city}',
'password' => '{password}',
'charset' => 'utf8',
],
],
],
],
];
также в конфиге переопределил класс для authManager
'authManager' => [
'class' => 'general\components\myDbManager',
],
а вот и сам класс
use yii\rbac\DbManager;
class myDbManager extends DbManager
{
public $db = ['dynamicServiceLocator']; <---- как сюда правильно передать текущее подключение?
}
Но получаю ошибку "Setting unknown property: yii\db\Connection::0". Кто-нибудь реализовывал такой функционал? Как правильно скоромить нужное подключение authManager'у?