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运用相关推荐

  1. yii2 behavior 排除某个方法_中学科目二 | 教学方法

    重点梳理01教学方法 选择/简答 ▎知识讲解  课后练习  例题1:教师按一定的教学要求向学生提出问题,要求学生回答,并通过问答的形式来引导学生获取或巩固知识的方法,称为( ). A. 讨论法 B. ...

  2. behavior php,YII2框架中behavior行为的理解与使用方法示例

    本文实例讲述了YII2框架中behavior行为的理解与使用方法.分享给大家供大家参考,具体如下: YII2中的行为说白了就是对组件功能的扩展,在不改变继承关系的条件下. 行为附加到组件后,行为将注入 ...

  3. Yii2 事件学习笔记

    Yii2中事件一般用event表示,只有集成了yii\base\component的对象才能集成类或者对象级别的事件处理过程. 事件的理解和使用要点主要有以下几个要点: 1.事件如何触发? 2.事件处 ...

  4. php restful yii,yii2 restful 风格搭建(一)

    最近在研究 yii2 如何搭建 restful api,将心得写下,欢迎一起讨论 使用yii2.0.13 advanced 版,将 frontend 整个作为 api 接口项目,除了接口的路由规则可以 ...

  5. Yii2 源码分析 - 入口文件执行流程

    2019独角兽企业重金招聘Python工程师标准>>> 以 yii 2.0.14 高级版的 frontend 为例,从 frontend/web/index.php 开始 //引用 ...

  6. yii2授权之ACF

    yii2授权之ACF 授权是指验证用户是否允许做某件事的过程,在yii2中中简单来讲就是是否允许某类访客是否能访问某个controller或者是其下的action.想一个这样的场景,一个师生交互平台, ...

  7. 深入理解YII2.0

    接触使用YII已经有几年光阴了,现在结合digpage.com(解析的很深入)这个网站的内容,会有变动,稍微记录一下. 一来帮助自己梳理一遍,二来做个一份备份入口.详细的还是请访问 (侵·删·联QQ2 ...

  8. php yii2 搜索功能,yii2使用xunsearch搜索功能

    如何安装 Xunsearch 我只说一个大概,详情请参照官方文档. 首先要安装 Xunsearch,安装命令如下:wget http://www.xunsearch.com/download/xuns ...

  9. Yii2 event-如何使用事件

    这里说的是通过行为的方式绑定事件 定义行为事件类:EventService.php <?php namespace api\components;use Yii; use yii\base\Be ...

最新文章

  1. 1029 Median
  2. 谷歌浏览器删除相同重复无效书签
  3. 云计算背后的秘密(6)-NoSQL数据库的综述
  4. 《Effective C#》读书笔记——条目28:提供粗粒度的互联网API使用C#表达设计
  5. svm常用核函数及选择核函数的方法
  6. SQL 在表中建立索引的作用
  7. oneproxy mysql_在OneProxy的基础上实行MySQL读写分离与负载均衡
  8. 射线计算机,面对射线-射频-计算机 我愿做“影像工匠师”
  9. java类型占用字节数类型转换
  10. 事故记录-过多进程致使CPU卡死
  11. MySQL导出sql脚本文件
  12. 手机怎么打开html.chm,chm格式文件怎么打开,华为手机chm阅读器哪个好
  13. 重发布直连路由到 OSPF
  14. 支持百度网盘同步的专业备份软件
  15. 摩斯密码基础知识介绍
  16. 【Vim】No write since last change
  17. Lucas–Kanade(LK)光流算法详解
  18. “会说话的汤姆猫家族-时代逐光者”3D数字藏品中奖名单公布
  19. 干货!必看创意按钮设计,打造真正的按钮诱惑
  20. java 米转换公里_java中把米换算成公里的代码是什么?

热门文章

  1. JSP中Listener和Timer的运用
  2. Babel 7 基础入门学习(详细版)
  3. 廖雪峰老师Git教程代码梳理
  4. 深入浅出NIO之Selector实现原理
  5. 1.App瘦身经验总结
  6. 老男孩linux运维50期
  7. CA计划6.14亿美元收购安全测试公司Veracode
  8. How to Fix an App that Crashes in Release but n...
  9. java _web之Servlet简单应用
  10. Real to Int