# Yii控制器
總結Yii2控制器常用的一些操作,包括請求,和view層的配合。
[TOC]
## Yii控制器請求
### 獲取GET請求的所有參數
```php
\Yii::$app->request->get();
```
### 獲取GET請求參數`id`的值
```php
\Yii::$app->request->get('id');
```
### 獲取POST請求的所有參數
```php
\Yii::$app->request->post();
```
### 獲取POST請求參數`username`的值
```php
$username = \Yii::$app->request->post('username');
```
### 判斷請求類型
```php
$is_get = \Yii::$app->request->isGet;
$is_put = \Yii::$app->request->isPut;
$is_post = \Yii::$app->request->isPost;
$is_ajax = \Yii::$app->request->isAjax;
$is_delete= \Yii::$app->request->isDelete;
$is_patch= \Yii::$app->request->isPatch;
$is_head = \Yii::$app->request->isHead;
...
```
### 獲取當前用戶IP地址
```
$ip_address = \Yii::$app->request->userIP;
```
## 控制器數據傳送到視圖的幾種方式
### 使用函數傳參方式傳遞數據
這是比較傳統的方式傳輸數據到視圖層,但在`renderPartial()`函數中傳入數組的數據可能會比較多。
```php
public function actionIndex()
{
$user = ['userid'=>1,'username'=>'curder'];
$str = 'hello world';
return $this->renderPartial('index',['str'=>$str,'user'=>$user]);
}
```
### 使用數組方式傳遞數據
通過傳遞數據的形式減少第二個參數中數組的個數。
```php
public function actionIndex()
{
$data['user'] = ['userid'=>1,'username'=>'curder'];
$data['str'] = 'hello world';
return $this->renderPartial('index',$data);
}
```
### 使用php自帶函數[compact](http://php.net/manual/zh/function.compact.php)傳遞數據
使用`compact`函數,在Laravel框架中用得比較多,也可以在Yii2中使用。
```php
public function actionIndex()
{
$user = ['userid'=>1,'username'=>'curder'];
$str = 'hello world';
return $this->renderPartial('index',compact('user','str'));
}
```
- 開始
- Yii2開發小技巧
- Yii2使用不同的方式進行郵件發送邏輯處理
- Yii2 Serialization of 'Closure' is not allowed 錯誤
- Yii創建應用
- Yii應用結構和流程
- Yii的路徑別名
- Yii的請求
- Yii的響應
- Sessions 和 Cookies
- Yii自定義全局工具函數
- Yii2模型
- Yii2視圖
- Yii2控制器
- 大數據節省內存處理
- 關聯查詢hasMany、hasOne
- Yii2 URL地址美化
- Yii2整合AdminLTE后臺主題
- Yii2模型中的場景
- Yii2中的RBAC
- Yii2項目后臺整合yii2-admin模塊
- RBAC集成AdminLTE后臺主題對菜單進行控制
- Yii2自定義Gii模板
- 修復AdminLTE引用外部字體文件導致訪問變慢的情況
- Yii2事件簡單使用
- Yii2模型事件
- Yii2使用GridView新增操作按鈕
- Yii2向loyout模板文件中傳值
- Yii2數據緩存
- Yii2緩存
- Yii2數據緩存之增刪改查
- Yii2拓展
- Yii2日期時間插件-datetimepicker
- kartik-v/yii2-widget-fileinput上傳插件