SilverStripe - 会话使用的简单示例

时间:2014-02-20 14:51:01

标签: php session silverstripe

我正在尝试从会话开始,但直到现在(是的,我是红色的文档)我绝对不知道如何开始。

或许有人可以给我一个简单的例子。例如。如果选中了复选框,则存储。

提前谢谢

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

Session::set('checked', true);
$isChecked = Session::get('checked');

这应该让你开始。