我正在尝试从会话开始,但直到现在(是的,我是红色的文档)我绝对不知道如何开始。
或许有人可以给我一个简单的例子。例如。如果选中了复选框,则存储。提前谢谢
答案 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');
这应该让你开始。