Извините, если задан этот вопрос, прежде чем я не смог его найти. Я не мог найти ответ, который я искал.
У меня есть устаревшее приложение, которое я перестраиваю с помощью Symfony2, к сожалению, мне нужно некоторое время работать параллельно, пока я не смогу закончить восстановление всей системы. Я в той части, где мне нужно иметь symfony, чтобы иметь возможность доступа к устаревшим данным сеанса, чтобы они могли функционировать.
Я нашел это на сайте Symfony: http://symfony.com/doc/current/cookbook/session/php_bridge.html http://symfony.com/doc/current/components/http_foundation/session_php_bridge.html
Но я не понимаю, что должна произойти конфигурация, и где Im должен был вызвать начало сеанса, а также как получить доступ к данным сеанса из моего нового приложения.
Могу ли я разместить пример в symfony в каждом контроллере, который я создаю?
use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage; // legacy application configures session ini_set('session.save_handler', 'files'); ini_set('session.save_path', '/tmp'); session_start(); // Get Symfony to interface with this existing session $session = new Session(new PhpBridgeSessionStorage()); // symfony will now interface with the existing PHP session $session->start();
Кажется, должен быть способ централизовать его.
ОБНОВЛЕНИЕ В руководстве приведен пример, но он не говорит, должен ли он находиться в контроллере, службе, сущности или конфигурации где-нибудь.
Я попытался использовать пример кода в контроллере, и когда я делаю print_r в сессии $, я не вижу никаких устаревших данных сеанса.
**
Заранее спасибо.
Что вы ищете, есть образец кода для компонента, который использует symfony. Сеанс Symfonys инициализируется из параметров, установленных в app / config.yml. Инструкции по компонентам выполняются только в том случае, если вы используете компонент вне symfony. Тот, который вы хотите, является первым. Однако использование:
#app/config.yml framework: session: storage_id: session.storage.php_bridge handler_id: session.handler.native_file
Предназначен для использования, если вы включаете symfony в другое приложение, в котором вызывается session_start()
до того, как будет создан экземпляр symfony. Я не тестировал это, но он все еще может работать, если они работают параллельно, но вам может понадобиться выполнить некоторую настройку для обработчика сеанса.
Возможно, посмотрите на использование обработчика сеанса pdo: http://symfony.com/doc/current/cookbook/configuration/pdo_session_storage.html