Питання Як використовувати сеанси в Symfony? [ЗАЧИНЕНО]


Як і в класичному PHP, ми використовуємо магічні змінні для запуску та створення сеансів, так як це зробити в Symfony?


31
2017-11-19 07:41


походження




Відповіді:


У вашому контролері ви можете отримати доступ до змінних сеансів через об'єкт користувача.

// Get a session value
$name = $this->getUser()->getAttribute('name', 'default_value');
// Set a session value
$this->getUser()->setAttribute('name', $value);

32
2017-11-19 09:03



На ваш погляд, ви можете отримати доступ до змінних сеансів через $sf_user змінна, так само, як і ви $this->getUser() в контролері - Throoze
Я не думаю, що це буде працювати, якщо у вас немає користувача або брандмауер. - Ascherer


У Symfony2 синтаксис інший:

$session = $this->getRequest()->getSession();

// store an attribute for reuse during a later user request
$session->set('foo', 'bar');

// in another controller for another request
$foo = $session->get('foo');

Ви також можете отримати змінні сеансів з Twig, без необхідності одночасно передавати змінну сесії (це в глобальному додатку):

{{ app.session.get('foo', 'bar'); }}

80
2017-07-14 12:46



Symfony:  тому що хтось дійсно піклується про Закон Деметри в будь-якому випадку? - rdlowrey
Як змінні змінних сеансів порушують закон Деметри? - Videl
@Videl не використовує сеанси, які порушують LoD, його абстрактний шар від symfony. - Marcel Burkhard
getRequest() не підтримується як Symfony 2.4. Належним способом зробити це зараз є введення запиту в контролер і дзвінок $request->getSession(). api.symfony.com/2.0/Symfony/Component/HttpFoundation/... - HPierce
Це буквально протилежне тому, що не дбає про закон деметра, структура symfony спілкується з власним API - user3531149