接下來,繼續學習yii2框架的使用。前面說過yii2是物件導向的設計,所以php中常用的全域性陣列和基本功能都活做好了封裝。下面依次開始介紹這個元件。
1.http中的request請求元件
1.1 獲取引數
$data=$request->get("id"); //獲取 get請求引數為id 的值 等價於 $_get["id"]
$data=$request->get("id",20);// 獲取引數id,若引數沒有值,則賦值20給id引數
$data=$request->post("name"); //獲取 post請求的 id引數 post()和get()方法使用一直
1.2 判斷請求型別
$method=$request->isget ;//判斷是否為 get請求 返回bool值
$method=$request->ispost; //判讀是否為 post請求 返回bool值
1.3 獲取csrf驗證的驗證碼引數 (yii2中的post請求必須含有乙個隱藏的表單字段,_csrf賦予下面的值,否則頁面報錯400,提交不上表單)
$csrf=$request->csrftoken; // csrf cross-site request forgery 防止跨站請求偽造攻擊
1.4 獲取cookie
$cookie=$cookies->get("path"); //獲取 乙個 cookie名字為 path的值的cookie的物件
$value=$cookie->value;// 獲取到cookie的值
1.5 雜湊加密密碼和密碼校驗
$password="admin"; //雜湊加密字串
$getpassword= $request->getsecurity
()->
generatepasswordhash($password);
//資料庫中獲取的密碼 與提交過來的密碼進行驗證
$request->getsecurity
()-validatepassword($password,$passwordfromdb);
1.6 獲取使用者的ip位址
$ip=$request->userip;//獲取到客戶端的ip位址
常用的方法大致是這麼大,剩餘的大家可以查詢官方文件做詳細的了解和使用。
2.http的response元件
2.1 新增cookie
$cookie=new cookie(["name"=>"path","value"=>"/hello/php"]);//new乙個cookie物件
$cookie->path="/";//設定cookie的path
$response->cookies->add($cookie);//http響應乙個cookie回去
2.2 headers //http響應頭物件
$response->headers->add("pragram","no-cache");//不快取
3.session元件
if(!$session->isactive())//session處於非開啟狀態
$sessionvalue=$session->get("id");//獲取$_session["id"]等價
$session->set("id",20);//儲存session值
4.生成url
url::to(["index/login"],true);//預設不填第二個引數false生成相對url true生成絕對url
5.arrayhelper類
arrayhelper::htmlencode($array);//對$array的所有值做編碼變為html實體符號
6.轉換字元實體,防止xss攻擊
$safestring=html::encode($string); //獲取轉換後的字元
7. 接下來講解控制器(controller),檢視(view)的建立和應用
在controller目錄下新建乙個indexcontroller.php 命名規則:駝峰式命名+controller.php
use yii\web\controller;
class indexcontroller extends controller
public function actionindex()
public function afteraction() //後置操作,執行在action之後
}
訪問瀏覽器:http://localhost/index/index 輸出:
1start
2index
3end
此時在 view目錄下建立乙個和控制器一樣的目錄 index,在裡面新增乙個index.php 裡面新增一句話 "hello world"
然後此時在 actionindex()
此時再重新整理網頁: 會出現我們再index/index.php中的hello world 的字,還有好友一些框架的css樣式(簡稱父模板)。因為我們使用了 render()這個方法渲染檢視,若不想渲染父模板,則用方法 renderpartial("index") 方法,就只會渲染本身的檢視,包含任何父模板。
7.1 父模板的使用
如果我們的**的網頁有很多地方都是一樣的**,例如html的基本結構:
<?=$content?>
這個就是重複**,如果我們將此作為模板,然後把我們body裡面的內容直接寫在檢視裡面,不用再每次去寫這個html頭。我們可以這麼做
在indexcontroller裡面新增乙個私有變數 private $layout ="common";(此時在view/layouts/)新建乙個common.php檔案內容為上面的html檔案頭。此時,我們在
actionindex()方法中使用render("index"); 訪問瀏覽器,會出現 原本只有純文字的「」hello world「」出現在了body標籤之中,也就是說這兩個頁面結合在了一起。其中$content
變數就是index.php中的內容,通過
<?=$content?>再輸出到了body標籤裡面。
7.1 controller傳遞引數到頁面
很簡單通過renderpartial()的第二引數傳入即可: 例如
return $this->rednerpartial("index",["name"=>"yii","language"="php"]);
在index.php中直接輸出 :
echo $name; echo $language;// yii php 就會顯示
YII配置使用應用元件
應用主體是服務定位器,它部署一組提供各種不同功能的應用元件來處理請求。官方這話,按我的理解這個元件的話,相當於第三方的class上封裝使用。例如你要配置oss,excel 什麼的第三方庫檔案基礎上封裝自己的物件方法。但文件沒發現怎麼去配置使用。自己研究了一下大概了解了流程記錄一下。首先專案目錄下建立...
yii2 常用元件 表單
簡介 yii2中最常用的元件activeform,通過對activeform的靈活運用,能有效的提公升開發效率,所以這個是不得不說的乙個yii2元件,那麼下面就來了解一下yii2.0的activeform的具體用法 用法 form signup 文字框的標題 field model,test1 la...
yii的urlManager元件配置
配置元件主要包括 urlmanager官方文件介紹 從官網文件看到,urlmanager是乙個類,為什麼又把它稱為元件呢?先不用管,我們只需知道,要為元件指定類即可,如果沒有指定會報錯,除非該元件有預設類,哪些元件有預設類呢?就是核心元件,裝個b看下原始碼,以yii高階模板為例。pis 如無特別說明...