




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第YII框架常用技巧總結(jié)本文實(shí)例總結(jié)了YII框架常用技巧。分享給大家供大家參考,具體如下:
獲取當(dāng)前Controllername和actionname(在控制器里面使用)
echo$this-
echo$this-action-
控制器獲取當(dāng)前模塊
$this-module-id
不生成label標(biāo)簽
//ActiveForm類
$form-field($model,'字段名')-passwordInput(['maxlength'=true])-label(false)
Yii2獲取接口傳過來(lái)的JSON數(shù)據(jù):
Yii::$app-request-rawBody;
防止SQL和Script注入:
useyii\helpers\Html;
useyii\helpers\HtmlPurifier;
echoHtml::encode($view_hello_str)//可以原樣顯示script/script代碼
echoHtmlPurifier::process($view_hello_str)//可以過濾掉script/script代碼
大于、小于條件查詢
//SELECT*FROM`order`WHERE`subtotal`200ORDERBY`id`
$orders=$customer-getOrders()
-where(['','subtotal',200])
-orderBy('id')
-all();
搜索的時(shí)候添加條件篩選
$dataProvider=$searchModel-search(Yii::$app-request-queryParams);
//$dataProvider-query-andWhere(['pid'=0]);
$dataProvider-query-andWhere(['','pid',0]);
//可選傳參
$dataProvider-query-andFilterWhere(['id'=isset($id)$id:null]);
有兩種方式獲取查詢出來(lái)的name為數(shù)組的集合[name1,name2,name3]:
方式一:
return\yii\helpers\ArrayHelper::getColumn(User::find()-all(),'name');
方式二:
returnUser::find()-select('name')-asArray()-column();
打印數(shù)據(jù):
//引用命名空間
useyii\helpers\VarDumper;
//使用
VarDumper::dump($var);
//使用2第二個(gè)參數(shù)是數(shù)組的深度第三個(gè)參數(shù)是是否顯示代碼高亮(默認(rèn)不顯示)
VarDumper::dump($var,10,true);die;
表單驗(yàn)證,只要需要一個(gè)參數(shù):
publicfunctionrules()
return[
[['card_id','card_code'],function($attribute,$param){//至少要一個(gè)
if(empty($this-card_code)empty($this-card_id)){
$this-addError($attribute,'card_id/card_code至少要填一個(gè)');
},'skipOnEmpty'=false],
SQLisnotnull條件查詢
//['not'=['attribute'=null]]
//['ISNULL(`attribute`)'=true]
$query=newQuery;
$query-select('ID,City,State,StudentName')
-from('student')
-where(['IsActive'=1])
-andWhere(['not',['City'=null]])
-andWhere(['not',['State'=null]])
-orderBy(['rand()'=SORT_DESC])
-limit(10);
校驗(yàn)point_template_id在PointTemplate是否存在
publicfunctionrules()
return[
[['point_template_id'],'exist',
'targetClass'=PointTemplate::className(),
'targetAttribute'='id',
'message'='此{(lán)attribute}不存在。'
Yii給必填項(xiàng)加星
div.requiredlabel:after{
content:
"*";
color:
red;
執(zhí)行SQL查詢并緩存結(jié)果
$styleId=Yii::$app-request-get('style');
$collection=Yii::$app-db-cache(function($db)use($styleId){
returnCollection::findOne(['style_id'=$styleId]);
},self::SECONDS_IN_MINITUE*10);
場(chǎng)景:
數(shù)據(jù)庫(kù)有user表有個(gè)avatar_path字段用來(lái)保存用戶頭像路徑
需求:頭像url需要通過域名/作為基本url
目標(biāo):提高代碼復(fù)用
此處/可以做成一個(gè)配置
示例:
User.php
classUserextends\yii\db\ActiveRecord
publicfunctionextraFields()
$fields=parent::extraFields();
$fields['avatar_url']=function(){
returnempty($this-avatar_path)'可以設(shè)置一個(gè)默認(rèn)的頭像地址':'/'.$this-avatar_path;
return$fields;
ExampleController.php
classExampleControllerextends\yii\web\Controller
publicfunctionactionIndex()
$userModel=User::find()-one();
$userData=$userModel-toArray([],['avatar_url']);
echo$userData['avatar_url'];//輸出內(nèi)容:/頭像路徑
Model里面rules聯(lián)合唯一規(guī)則
復(fù)制代碼代碼如下:[['store_id','member_name'],'unique','targetAttribute'=['store_id','member_name'],'message'='ThecombinationofStoreIDandMemberNamehasalreadybeentaken.'],
Model多個(gè)字段一條規(guī)則不同提示
[['name','email','subject','body'],'required','message'='{attribute}必須'],
標(biāo)量查詢
Post::find()-select('title')-where(['user_id'=$userId])-scalar();
生成SQL:
SELECT`title`FROM`post`WHERE`user_id`=1
直接輸出title的值。
如果select('title')不寫的話,生成SQL是:
`SELECT*FROM`post`WHERE`user_id`=1`
直接輸出id的值
表單驗(yàn)證,去除首尾空格:
publicfunctionrules()
return[[title','content'],'trim']];
單獨(dú)為某個(gè)Action關(guān)閉Csrf驗(yàn)證
新建一個(gè)Behavior
useYii;
useyii\base\Behavior;
useyii\web\Controller;
classNoCsrfextendsBehavior
public$actions=[];
public$controller;
publicfunctionevents()
return[Controller::EVENT_BEFORE_ACTION='beforeAction'];
publicfunctionbeforeAction($event)
$action=$event-action-
if(in_array($action,$this-actions)){
$this-controller-enableCsrfValidation=false;
然后在Controller中添加Behavior
publicfunctionbehaviors()
return[
'csrf'=[
'class'=NoCsrf::className(),
'controller'=$this,
'actions'=[
'action-name'
LIKE查詢單邊加%
['like','name','tester']會(huì)生成nameLIKE'%tester%'。
['like','name','%tester',false]=nameLIKE'%tester'
$query=User::find()-where(['LIKE','name',$id.'%',false]);
SQL隨機(jī)抽取十名幸運(yùn)用戶
$query=newQuery;
$query-select('ID,City,State,StudentName')
-from('student')
-where(['IsActive'=1])
-andWhere(['not',['State'=null]])
-orderBy(['rand()'=SORT_DESC])
-limit(10);
關(guān)于事務(wù):
Yii::$app-db-transaction(function(){
$order=newOrder($customer);
$order-save();
$order-addItems($items);
//這相當(dāng)于下列冗長(zhǎng)的代碼:
$transaction=Yii::$app-db-beginTransaction();
try{
$order=newOrder($customer);
$order-save();
$order-addItems($items);
$transaction-commit();
}catch(\Exception$e){
$transaction-rollBack();
throw$e;
批量插入數(shù)據(jù)
第一種方法
$model=newUser();
foreach($dataas$attributes){
$_model=clone$model;
$_model-setAttributes($attributes);
$_model-save();
第二種方法
$model=newUser();
foreach($dataas$attributes){
$model-isNewRecord=true;
$model-setAttributes($attributes);
$model-save()$model-id=0;
URL操作
獲取url中的host信息
Yii::$app-request-getHostInfo()
獲取url中的路徑信息(不包含host和參數(shù)):
Yii::$app-request-getPathInfo()
獲取不
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)星遙感數(shù)據(jù)分析師崗位面試問題及答案
- 2025屆湖南省瀏陽(yáng)一中、株洲二中等湘東五校高二下化學(xué)期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 2025屆遼寧省本溪市高一化學(xué)第二學(xué)期期末教學(xué)質(zhì)量檢測(cè)模擬試題含解析
- 2025屆廣東省河源市連平縣連平中學(xué)高一下化學(xué)期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 2025屆河北省石家莊市新樂培英中學(xué)高一化學(xué)第二學(xué)期期末綜合測(cè)試試題含解析
- 園區(qū)管理辦法教案小班
- 機(jī)場(chǎng)應(yīng)急預(yù)案管理辦法
- 智能投顧技術(shù)演進(jìn)-洞察及研究
- 建筑文明施工方案
- 發(fā)票管理辦法發(fā)票使用
- 2025年入黨培訓(xùn)測(cè)試題庫(kù)及答案
- 工地用電節(jié)約管理辦法
- 科創(chuàng)板開戶測(cè)試題及答案
- 內(nèi)科護(hù)理學(xué)消化性潰瘍
- 北京市第一零一中學(xué)2023-2024學(xué)年高一下學(xué)期期末考試地理試題(解析版)
- 中小學(xué)暑期安全教育班會(huì)課件
- DB43-T 2988-2024 再生稻高產(chǎn)栽培技術(shù)規(guī)程
- 2024年荊州市荊發(fā)控股集團(tuán)招聘考試真題
- 慢病智能監(jiān)測(cè)-洞察及研究
- 部門預(yù)算支出經(jīng)濟(jì)分類科目
- 2025年內(nèi)蒙古呼倫貝爾農(nóng)墾集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
評(píng)論
0/150
提交評(píng)論