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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言数字灵活多变的访问形式_学习C语言你必须知道的事儿!

是新朋友吗&#xff1f;记得先点蓝字关注我哦&#xff5e;今日课程菜单Java全栈开发 | Web前端H5大数据开发 | 大数据分析人工智能Python | 人工智能物联网有听过这样一段话&#xff1a;在编程界&#xff0c;C语言就是道家的“三”&#xff0c;A生B&#xff0c;B生C&#xff0c…

IDEA通过git怎么回滚到某个提交节点或某个版本

1:先右键点击项目&#xff0c;选择git,接着Show History 2:这里会显示有历史提交的版本记录,假设我要回滚到箭头处到提交&#xff0c;操作如下 3:右键点击&#xff0c;点击Copy Revision Number 在编辑器里粘贴&#xff0c;可以看到如下 4:右击选择项目&#xff0c;选择git -&…

linux与mysql_Linux与MySQL

mysql -h localhost -u 用戶名 -p 密碼 //連接數據庫use desk_show; //使用數據庫show tables; //顯示數據表describe desk6_0; …

关系数据库基础知识介绍

1、关系的相关名词介绍属性&#xff08;Attribute&#xff09;:描述事物的若干特征称为属性。比如学号、姓名、职位、年龄等。域&#xff08;Domain&#xff09;&#xff1a;针对属性的取值范围集合。比如性别取值为男、女、学号的长度为8位等。一般在关系数据模型中&#xff0…

android中xmlns:tools属性详解

第一部分 安卓开发中&#xff0c;在写布局代码的时候&#xff0c;ide可以看到布局的预览效果。 但是有些效果则必须在运行之后才能看见&#xff0c;比如这种情况&#xff1a;TextView在xml中没有设置任何字符&#xff0c;而是在activity中设置了text。因此为了在ide中预览效果&…

mysql sleep 5908_mysql连接卡死,很多线程sleep状态,导致CPU中mysqld占用率极高(问题原因还待考证)...

mysql> show processlist;—–————-——————–| Id | User | Host | db | Command | Time| State | Info—–————-——————–|207|root |192.168.0.2:51621 |mytest | Sleep | 5 | | NULL|208|root |192.168.0.2:51622 |mytest | Sleep | 5 | | NULL|220|ro…

python excel库 linux_用python写一个简单的excel表格获取当时的linux系统信息

最近在学习excel表格的制作&#xff0c;顺便结合之前学习的内容&#xff0c;利用python的两个模板&#xff0c;分别是获取系统信息的psutil&#xff0c;和生成excel表格的xlsxwriter。利用这两个模板将生成一个简单的excel表格&#xff0c;获取当时的linux系统信息&#xff0c;…

mac下安装brew下载非常慢解决方法

一键解决&#xff1a;自动脚本(全部国内地址)&#xff08;在Mac os终端中复制粘贴回车下面这句话) /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"输入y 在终端环境下&#xff0c;brew --version 查看brew的版本&#xf…

关系数据库模式和完整性约束相关概念

一、关系数据库模式介绍关系的描述形式&#xff1a;R(U,D.dom,F)&#xff0c;简化形式&#xff1a;R(U)、R(A1,A2,A3...An)R:表示关系名&#xff1b;U组成该关系的属性名集合&#xff1b;D是属性的域&#xff1b;dom是属性向域的映像集合&#xff1b;F为属性间数据的依赖关系集…

分布式锁的实现方式

在进行大型网站技术架构设计以及业务实现的过程中&#xff0c;多少都会遇到需要使用分布式锁的情况。那么问题也就接踵而至。分布式锁zk和memcached以及redis三者都能实现&#xff0c;同样是分布式锁&#xff0c;三者的区别何在&#xff1f;各自适用什么场景&#xff1f; 一、Z…

关系数据库基础:关系代数运算知识笔记

1、关系代数运算符集合运算符&#xff1a;并(U)、差(-)、交(∩)、笛卡尔积()专门的关系运算符&#xff1a;选择(∂)、投影(π)、连接&#xff08;∞&#xff09;、除()算术比较符&#xff1a;大于&#xff08;&#xff1e;&#xff09;、大于等于&#xff08;≥&#xff09;、小…

POJ 1308 Is It A Tree? (并查集)

Is It A Tree?题目链接&#xff1a; http://acm.hust.edu.cn/vjudge/contest/123393#problem/M Description A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one or more nodes connected by directed edges between node…

Mysql分页加pagebean_Spring+MyBatis+SpringMvc+Mysql+Druid+PageHelper分页实现

我是阿福&#xff0c;公众号「阿福聊编程」作者&#xff0c;一个在后端技术路上摸盘滚打的程序员&#xff0c;在进阶的路上&#xff0c;共勉&#xff01;文章已收录在 JavaSharing 中&#xff0c;包含Java技术文章&#xff0c;面试指南&#xff0c;资源分享。思路分析MyBatis的…

python csv使用_python CSV模块的使用

简介 CSV&#xff08;comma separated values&#xff09;&#xff0c;逗号分隔值&#xff08;字符分割值&#xff0c;字符可以不是逗号&#xff09;&#xff0c;常用的文本格式&#xff0c;用以存储表格数据&#xff0c;包括数字或者字符。kaggle就是csv格式&#xff0c;pytho…

JDK 与 JRE区别

JDK 与 JRE JDK 与 JRE 是我们经常遇到的概念&#xff0c;但许多学习了几年的开发都搞不懂他们之间的区别。简单地说 JRE&#xff08;Java Runtime Environment&#xff09;仅包含运行 Java 程序的必需组件&#xff0c;包括 Java 虚拟机以及 Java 核心类库等。而 JDK&#xff…

数据库技术基础:查询优化相关知识笔记

1、查询优化的基本概念1.1 查询处理查询处理是指从数据库中提取数据的一系列活动。主要包括:将高级数据库查询语句翻译成文件系统这一物理 层次的表达式&#xff0c;为优化查询进行各种转换以及查询的实际执行。1.2 查询处理的代价查询处理的代价通常由磁盘的访问&#xff0c;因…

设计模式----解释器模式

一、简介 解释器模式使用频率并不高&#xff0c;通常用来构建一个简单语言的语法解释器&#xff0c;它只在一些非常特定的领域被用到&#xff0c;比如编译器、规则引擎、正则表达式、sql解析等。 解释器模式是行为型设计模式之一&#xff0c;它的原始定义为&#xff1a;用于定义…

HTML学习笔记16——尺寸的表示_px、%、em三种

1.像素表示&#xff1a; 23px 2.子像素可以用百分比表示其大小&#xff0c;如50%&#xff0c;表示为父元素的一半 如果块状子元素的宽度不指定&#xff0c;默认是占满父元素的宽度&#xff1b; 3.用em表示字体大小时&#xff0c;表示相对大小&#xff0c;是与父元素的比值&…

mysql索引是自动使用吗_mysql索引是自动使用吗?

MYSQL在创建索引后对索引的使用方式分为两种&#xff1a;其一&#xff0c;由数据库的查询优化器自动判断是否使用索引&#xff1b;其二&#xff0c;用户可在写SQL语句时强制使用索引。MYSQL在创建索引后对索引的使用方式分为两种&#xff1a;1 由数据库的查询优化器自动判断是否…

mac idea配置配置自动清除类中无用的import包

1:mac快捷键清包 control option o windows快捷键 Ctrl Alt O 2:打开Perferences ---> Editor --->Auto Imort 在下图选中方方框中勾上