Я хочу перезагрузить ту же страницу (текущую страницу), но с другими параметрами сеанса

0

ОСНОВНАЯ ПРОБЛЕМА
Я хотел бы изменить некоторые параметры сеанса (которые учитываются для отображения или не какой-либо части моей страницы) , нажав на кнопку, но все же отобразив ту же страницу. как я могу это достичь?

Exemple
Я хочу, чтобы пользователь изменил цвет фона страницы. (цвет фона сохраняется в сеансе ("backgroundcolor").
Как я могу сделать так, чтобы при щелчке пользователем по "Зеленой фоновому цвету" сеанс получил новое значение, и текущая страница (страница, на которой был пользователь, когда он нажал на кнопку) перезагружается.

(кнопка находится в главной компоновке, поэтому ее можно щелкнуть по всей странице сайта, которая, конечно же, имеет все разные маршруты)

ДЛЯ ИНФО
Я использую symfony2. Я не хочу делать это с помощью javascript/jquery, потому что это пример, и когда-то другое изменение значения сеанса пользователем вызывает запрос BD.

Теги:

2 ответа

0
Лучший ответ

здесь адаптация для Symfony (адаптированная из кода Tyranicangel, которая не была адаптирована к Symfony):

Я использовал форму и отправил на ту же страницу (action = "" в форме)

$session = $this->getRequest()->getSession(); // access to session
if(isset($_POST['backgroundcolor'])) 
{
   $session->set('backgroundcolor',$_POST['backgroundcolor']);
}
  • 0
    Вы должны использовать $ this-> getRequest () -> request-> get ('backgroundColor') вместо использования $ _POST, это способ Symfony использовать переменные GET и POST. symfony.com/fr/doc/current/book/...
  • 0
    имея две формы на одной странице, я получил некоторые проблемы, используя $ this-> getRequest () -> request (ошибка токена другой формы вызвана ... и не знаю, как разделить две формы в $ this-> getRequest () ...? могут быть некоторые аргументы / параметры, которые будут использоваться?
Показать ещё 1 комментарий
-1

Сообщение на ту же страницу и изменение переменной сеанса

<?php
   if(isset($_POST['change_color']))
   {
       session_start();
       $_SESSION['backgroundcolor']=$_POST['change_color'];
   }
//continue with your code
?>

При нажатии кнопки отправьте запрос на эту же страницу.

  • 0
    У symfony2 есть встроенная система сессий, и этот ответ может привести к неожиданному неверному результату.
  • 0
    Я адаптировал ответ для сборки symfony2 в сессии. работает нормально.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню