请求处理 - Session ¶
作者:KK
发表日期:2016.12.13
用的是session组件,是个核心组件,所以默认不用额外定义什么
主要用法 ¶
客官请复制
public function actionTest(){
$session = Yii::$app->session;
if(!$session->has('key1')){
$session->set('key1', 11);
}
echo $session->get('key1'); //11
$session->remove('key1');
echo $session->count; //1
//就像request->get('page', 1)
echo $session->get('key1', 22); //不存在,返回默认值22
if($session->isActive){
//session活动中,关闭它
echo 33;
$session->close();
}
if(!$session->isActive){
//session已经不活动了
echo 44;
//$session->open(); //自己试,底层有session_start
$session->set('key1', 99); //会自动open
echo $session->get('key1'); //99
}
}
其它 ¶
removeAll()清除所有session
不支持session前缀配置
Flash数据 ¶
官方的Session文档中有Flash这一教程,这不是说浏览器的Flash插件,而是Yii基于session定义的一个子概念“闪存数据”,闪一下就不见了
应用场景示例是这样的:
用户同步请求a地址删除一个数据,并
session->setFlash('success', '删除成功')
,其实存进了session删除成功,输出一个提示页面
页面模板通过
session->getFlash('success')
输出删除成功的提示,并且在session里自动remove了这个success的key
其中如果getFlash没获取到相关的值也不会报错
有兴趣的同学自己去官网看看吧
我的带的项目基本都是前后分离的,所以传递提示内容给前端都是靠接口出json而不靠Yii的Flash,示例https://github.com/kk8686/xoa/blob/master/server/home/controllers/TaskController.php#L29