yii學習過程 常用元件的使用

2021-08-07 19:40:26 字數 3507 閱讀 3551

接下來,繼續學習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 如無特別說明...