Yii2 behavior运用
1 class ReturnDataTypeBehaviors extends Behavior 2 { 3 4 public $type = 'json'; 5 public $pcOrMobile = 'pc'; // or mobile 6 7 //控制器执行之后事件 8 public function events() 9 { 10 return [Controller::EVENT_BEFORE_ACTION => 'beforeType']; 11 } 12 13 /** 14 * 返回数据类型判断 15 * @param $event 16 * @return bool 17 */ 18 public function beforeType($event) 19 { 20 if ($this->pcOrMobile == 'pc') { 21 if (Yii::$app->request->isAjax) { 22 if ($this->type == 'json') { 23 Yii::$app->response->format = Response::FORMAT_JSON; 24 } elseif ($this->type == 'xml') { 25 Yii::$app->response->format = Response::FORMAT_XML; 26 } 27 } 28 } else { 29 if ($this->type == 'json') { 30 Yii::$app->response->format = Response::FORMAT_JSON; 31 } elseif ($this->type == 'xml') { 32 Yii::$app->response->format = Response::FORMAT_XML; 33 } 34 } 35 return true; 36 } 37 38 }
写在BaseController 里面 ,其他的控制器继承Base ,设定请求返回的数据
1 <?php 2 3 namespace app\controllers; 4 5 use app\behaviors\ReturnDataTypeBehaviors; 6 use app\helpers\Util; 7 use yii\helpers\Url; 8 use yii\web\Controller; 9 use app\models\Configuration; 10 use Yii; 11 12 class BaseController extends Controller 13 { 14 /** 15 * 默认分页值 默认10 16 */ 17 const PAGE_SIZE = 6; 18 19 20 public function behaviors() 21 { 22 return [ 23 24 'myBehavior' => [ 25 26 'class' => ReturnDataTypeBehaviors::className(), 27 # 'type'=>'json', 28 #'pcOrMobile'=>'pc' 29 ] 30 ]; 31 } 32 public function init() 33 { 34 //设置回调url 35 $this->_redirectUrl(); 36 // 登录验证 37 $this->_checkLogin(); 38 //session存留时间 39 $this->_setSessionTime(); 40 } 41 42 // 登录回调 43 private function _redirectUrl() 44 { 45 $redirectUrl = Yii::$app->request->url; 46 47 if ($redirectUrl == '/site/login') { 48 49 $redirectUrl = '/desktop'; 50 } 51 //设置登录后的回调路径 52 Yii::$app->session->setFlash('redirectUrl', $redirectUrl); 53 } 54 55 // 权限验证 56 private function _rbac() 57 { 58 59 //超级管理员不用过滤 60 61 62 } 63 64 // 登录验证 65 private function _checkLogin() 66 { 67 if (!(Yii::$app->request->url == '/site/login') && !Yii::$app->user->getId()) { 68 header('Location:'.Yii::$app->request->getHostInfo().'/site/login'); 69 exit; 70 } 71 72 } 73 //弹出小框提示 74 public function TipsBox($msg='',$url='') 75 { 76 77 } 78 //设置session的存储时间 79 private function _setSessionTime() 80 { 81 Yii::$app->session->setTimeout(1440 * 2 ); 82 } 83 84 }
Controller::EVENT_BEFORE_ACTION => 'beforeType' 触发事件调用‘beforeType’方法
转载于:https://www.cnblogs.com/xp796/p/5704297.html
Yii2 behavior运用相关推荐
- yii2 behavior 排除某个方法_中学科目二 | 教学方法
重点梳理01教学方法 选择/简答 ▎知识讲解 课后练习 例题1:教师按一定的教学要求向学生提出问题,要求学生回答,并通过问答的形式来引导学生获取或巩固知识的方法,称为( ). A. 讨论法 B. ...
- behavior php,YII2框架中behavior行为的理解与使用方法示例
本文实例讲述了YII2框架中behavior行为的理解与使用方法.分享给大家供大家参考,具体如下: YII2中的行为说白了就是对组件功能的扩展,在不改变继承关系的条件下. 行为附加到组件后,行为将注入 ...
- Yii2 事件学习笔记
Yii2中事件一般用event表示,只有集成了yii\base\component的对象才能集成类或者对象级别的事件处理过程. 事件的理解和使用要点主要有以下几个要点: 1.事件如何触发? 2.事件处 ...
- php restful yii,yii2 restful 风格搭建(一)
最近在研究 yii2 如何搭建 restful api,将心得写下,欢迎一起讨论 使用yii2.0.13 advanced 版,将 frontend 整个作为 api 接口项目,除了接口的路由规则可以 ...
- Yii2 源码分析 - 入口文件执行流程
2019独角兽企业重金招聘Python工程师标准>>> 以 yii 2.0.14 高级版的 frontend 为例,从 frontend/web/index.php 开始 //引用 ...
- yii2授权之ACF
yii2授权之ACF 授权是指验证用户是否允许做某件事的过程,在yii2中中简单来讲就是是否允许某类访客是否能访问某个controller或者是其下的action.想一个这样的场景,一个师生交互平台, ...
- 深入理解YII2.0
接触使用YII已经有几年光阴了,现在结合digpage.com(解析的很深入)这个网站的内容,会有变动,稍微记录一下. 一来帮助自己梳理一遍,二来做个一份备份入口.详细的还是请访问 (侵·删·联QQ2 ...
- php yii2 搜索功能,yii2使用xunsearch搜索功能
如何安装 Xunsearch 我只说一个大概,详情请参照官方文档. 首先要安装 Xunsearch,安装命令如下:wget http://www.xunsearch.com/download/xuns ...
- Yii2 event-如何使用事件
这里说的是通过行为的方式绑定事件 定义行为事件类:EventService.php <?php namespace api\components;use Yii; use yii\base\Be ...
最新文章
- 1029 Median
- 谷歌浏览器删除相同重复无效书签
- 云计算背后的秘密(6)-NoSQL数据库的综述
- 《Effective C#》读书笔记——条目28:提供粗粒度的互联网API使用C#表达设计
- svm常用核函数及选择核函数的方法
- SQL 在表中建立索引的作用
- oneproxy mysql_在OneProxy的基础上实行MySQL读写分离与负载均衡
- 射线计算机,面对射线-射频-计算机 我愿做“影像工匠师”
- java类型占用字节数类型转换
- 事故记录-过多进程致使CPU卡死
- MySQL导出sql脚本文件
- 手机怎么打开html.chm,chm格式文件怎么打开,华为手机chm阅读器哪个好
- 重发布直连路由到 OSPF
- 支持百度网盘同步的专业备份软件
- 摩斯密码基础知识介绍
- 【Vim】No write since last change
- Lucas–Kanade(LK)光流算法详解
- “会说话的汤姆猫家族-时代逐光者”3D数字藏品中奖名单公布
- 干货!必看创意按钮设计,打造真正的按钮诱惑
- java 米转换公里_java中把米换算成公里的代码是什么?