Symfony2: как изменить Entity Manager непосредственно перед выполнением login_checkPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Symfony2: как изменить Entity Manager непосредственно перед выполнением login_check

Сообщение Anonymous »

У меня есть два подключения к dbal. Один статический, определенный в config.yml, и один, определенный динамически. Когда мне это нужно в контроллере, я устанавливаю параметры соединения, такие как хост, имя базы данных, пароль и т. д.

Мне нужно установить динамическое соединение непосредственно перед выполнение действия проверки входа в систему (или в этом действии).
Это потому, что мой объект «Пользователь» находится в разных базах данных в соответствии с URL-адресом. Поэтому я не могу поместить определение динамического соединения в файл config.yml.

Я использую этот метод для установки нужного мне менеджера объектов:

Код: Выделить всё

public function switchConnection($connectionParam=array())
{
$conn = array_merge(
array('host'=>'127.0.0.1', 'port'=>'3306', 'dbName'=>'myDatabaseName', 'user'=>'myUser', 'pass'=>'myPass',  'driver'=>'pdo_mysql', 'connection'=>'default', 'em'=>'default')
, $connectionParam);

$dbalConnectionTo=sprintf('doctrine.dbal.%s_connection', $conn['connection']);
$connection = $this->container->get($dbalConnectionTo);
$connection->close();
$refConn = new \ReflectionObject($connection);
$refParams = $refConn->getProperty('_params');
$refParams->setAccessible('public');

$params = $refParams->getValue($connection);
$params['dbname'] = $conn['dbName'];
$params['user'] = $conn['user'];
$params['host'] = $conn['host'];
$params['port'] = $conn['port'];
$params['password'] = $conn['pass'];
$params['driver'] = $conn['driver'];
$params['charset']='UTF8';

$refParams->setAccessible('private');
$refParams->setValue($connection,$params);
$this->container->get('doctrine')->resetEntityManager($conn['em']);
return;
}
Могу ли я изменить код действия «login_check», чтобы настроить Entity Manager по-своему?

Подробнее здесь: https://stackoverflow.com/questions/132 ... ogin-check
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»