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.pswp.cn/news/271285.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271285.shtml
英文地址,請注明出處:http://en.pswp.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 在下圖選中方方框中勾上