YII的 創建控制器
1: 控制器 保證 控制器名+Controller 的文件名命名方式
2: 控制器是一個類 類名與文件名保持一致 且都須要繼承Controller 基礎控制類
3: 命名空間 全部的控制器都在 app\controllers 的命名空間下保存
4: 方法名爲 action+方法名的結構
YII 的訪問
1: 訪問連接 爲 /web/index.php?r=hello/index&id=111
入口文件-> web/index.php
?r= 控制器名/方法名&參數=參數值
2: 請求組件的使用
註冊組件 $request
= \YII::$app->request;
調用組件中的方法 $requset->get('參數名',若未接收到該參數則以此處填寫值爲默認值)
;
$requset->post('參數名',若未接收到該參數則以此處填寫值爲默認值)
;
判斷請求方式
$request->isGet; 返回值爲布爾類型
3:
響應組件的使用
註冊組件 $response = \YII::$app->response;
調用組件的方法
$response->statusCode = '404'; //設置狀態碼
$response->headers->add('pragma','no-Cache'); //設置網頁是否緩存
包裝後的跳轉方法
$this->redirect('http://www.baidu.com');
//redirect跳轉方法
$response->headers->add('content-disposition','attachment;filename="a.jeg"'); // header 頭加參數 文件下載功能
包裝後的文件下載方法
$response->sendFile("./index.php"); // 參數,文件路徑
4: session組件的使用
註冊組件 $session = \YII::$app->session;
$session->isActive; //判斷session 是否開啓
$session->open; //開啓session;
$session->set('鍵','值'); //設置session 值
$session->get('鍵'); //獲取session值
$session->remove('鍵'); //移除session值;
$session['鍵'] = '值'; //ArrayAccess 接口 使session能夠像數組同樣操做;
unset($session['鍵']); //註銷session值;
5: cookies 集合的使用
- use yii\web\Cookie; //聲明Cookie值;
$cookies = \YII->$app->response; //註冊響應組件$cookies_data = array('name'=>'user','value'=>'zhangsan'); //cookie 必須是鍵值對應$cookies->add(new Cookie($cookies_data)); //設置cookie值 $cookies->remove('user'); //移除cookie$cookies = \YII::$app->request->cookies; //請求組件中的cookies集合$cookies->getValue('cookie名','若不存在cookie名則返回此處值'); //獲取cookie值
6: 視圖的建立
1> 建立控制器, 在Views 文件夾下 建立同名文件夾 ,例如 HelloController控制器 須要在Views 下建立 Hello文件夾
2> 建立方法,爲不一樣的方法分配不一樣的視圖,,, 默認視圖文件應與 方法名一致,後綴爲 .php /例如 actionIndex() 方法 對應的視圖文件爲 index.php
3> 調用頁面 $this->renderPartial('index'); // randerPartial 局部渲染 調用index.php 視圖 ,無需添加 .php後綴
7: 給視圖傳遞參數
<?phpnamespace app\controllers;use yii\web\Controller;// use YII;use yii\web\Cookie; //Cookie的命名空間class HelloController extends Controller{ public function actionIndex(){ $hello_str = "Hello God!"; $test_arr = array(1,2); //第一步 建立一個數組 $data = array(); //將須要傳遞給視圖的數據放入數組中 $data['view_hello_str'] = $hello_str; //將數組傳遞給視圖 $data['view_test_arr'] = $test_arr; return $this->renderPartial('index',$data); }}
在index.php 視圖文件中寫入代碼
<h1>hello world</h1><h1><? echo $view_hello_str;?></h1> //輸出結果爲 Hello God!<h1><? echo $view_test_arr[0];?></h1> //輸出結果爲 1
8: 給視圖文件傳遞參數之安全性
$hello_str = "Hello God!<script>alert(2);</script> "; //注入JS代碼 正常狀況下 js代碼會被執行
在index.php 視圖文件中 引用 Html工具類 對顯示數據進行過濾
<?php use yii\helpers\Html; //引用Html 工具類 use yii\helpers\HtmlPurifier; //引用Html清理類 <h1><?=Html::encode($view_hello_str);?></h1> //將會顯示Hello God!<script>alert(2);</script> <h1><?=HtmlPurifier::process($view_hello_str);?></h1> //將會顯示 Hello God!
9: 視圖之佈局文件
1> 在views/layouts文件夾下 建立一個新的佈局文件 ; //例如 common.php
2> 在控制器中 聲明屬性 public $layout = 'common' //聲明使用哪一個佈局文件
3> 在方法中使用 $this->render('視圖文件'); //render會將視圖文件中的內容存入$content變量中 傳入佈局文件
4> 在佈局文件中使用變量<?=$content?> 輸出視圖文件中的內容