сеансы symfony2, куки или что-то совершенно другое? - PullRequest
0 голосов
/ 30 марта 2012

В настоящее время я делаю систему часов, которая находится внутри пользовательского приложения (CRM), которое делал предыдущий разработчик. У меня хорошо идут часы, но у меня всего несколько вопросов ...

После включения я устанавливаю сессию примерно так: $this->get('session')->set('clockedin', 'true');

Я установил сеанс так, чтобы отображать кнопку «Clockin» или «Clockout», я решил, что самый простой способ - просто прочитать переменную сеанса, чтобы определить, какую кнопку отображать, используя оператор ветки if / else в шаблонах (i чтобы кнопки отображались в 2 местах, 1 на каждой странице и 1 только в самой системе таймера)

Итак, это лучший способ сделать это или есть лучший рекомендуемый способ сделать это?

Следующее, что меня интересует, это истечение сеанса ... в моем config.yml я вижу:

session:
    cookie_lifetime:       43200
    auto_start:     true

Так, это значит, что способ, которым я его установил, длится 12 часов? Или для того, чтобы это было правдой, нужно ли мне вместо этого использовать cookie? Я думаю, что файл cookie может быть лучше, потому что, если браузер закрывается (многие сотрудники не склонны к технологическим изменениям), мне нужно, чтобы он был постоянным при следующей загрузке страницы.

Спасибо за любую помощь ..

1 Ответ

0 голосов
/ 30 марта 2012

Если другая неопределенно более поздняя операция зависит от состояния clockedin, я бы не стал полагаться на сеансы. Если пользователь выходит из сеанса, он становится недействительным (весь сеанс), поэтому clockedin будет потеряно.

Я бы предпочел использовать {% include %} или {% render %} для определения состояния каждый раз, когда вам нужно отобразить эту кнопку. Например:

/**
 * @Template()
 */
public function clockedInAction(){
   .... // do some login here
   $clocked_in = ....;
   return array(
        'clockedin' => $clockedin
   );
}

и в вашей веточке:

{% render "AcmeBundle:SomeController:clockedIn" %}

Шаблон этого контроллера содержит {% if .... %}, который вы хотели изначально:

{# AcmeBundle:SomeController:clockedIn.html.twig #}
{% if clockedIn %}
   display "Clocked In" button
{% else %}
   display "Clocked Out" button
{% endif %}

Теперь это дороже, так как при каждом запросе вы должны оценить ситуацию, а затем распечатать соответствующий шаблон, но он всегда соответствует системе ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...