SilverStripe – простой пример использования сеанса

Я пытаюсь начать с сессии, но до сих пор (да, я краю документы), я абсолютно не знаю, как начать.

возможно, кто-то может дать мне простой пример. Например, если флажок установлен или нет.

заранее спасибо

Сеансы SilverStripe довольно прямолинейны. Session класса – это просто хорошая оболочка вокруг php $_SESSION

 Session::set('MyCheckboxValue', 'Hello World'); 

для получения этого:

 $value = Session::get('MyCheckboxValue'); // note this will always return something, even if 'MyCheckboxValue' has never been set. // so you should check that there is a value if ($value) { ... } 

там также есть некоторая логика для работы с массивами:

 Session::set('MyArray', array('Bar' => 'Foo', 'Foo' => 'yay')); // this will add the string 'something' to the end of the array Session::add_to_array('MyArray', 'something'); // this will set the value of 'Foo' in the array to the string blub // the . syntax is used here to indicate the nesting. Session::set('MyArray.Foo', 'blub'); Session::set('MyArray.AnotherFoo', 'blub2'); // now, lets take a look at whats inside: print_r(Session::get('MyArray')); // Array // ( // [Bar] => Foo // [Foo] => blub // [0] => something // [AnotherFoo] => blub2 // ) 

вам следует также знать, что Session :: set () не сохраняет сразу $ _SESSION. Это делается в конце обработки запроса. Также Session :: get () не имеет прямого доступа к $ _SESSION, он использует кешированный массив. Таким образом, следующий код не сработает:

 Session::set('Foo', 'Bar'); echo $_SESSION['Foo']; // this will ERROR because $_SESSION['Foo'] is not set. echo Session::get('Foo'); // this will WORK 

это также означает, что если вы используете die () или exit (), сеанс не будет сохранен.

 Session::set('Foo', 'Bar'); die(); // because we die here, this means SilverStripe never gets a clean exit, so it will NEVER save the Session 

,

 Session::set('Foo', 'Bar'); Session::save(); die(); // this will work because we saved 
 Session::set('checked', true); $isChecked = Session::get('checked'); 

Это должно заставить вас начать.