




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第YII框架常用技巧总结本文实例总结了YII框架常用技巧。分享给大家供大家参考,具体如下:
获取当前Controllername和actionname(在控制器里面使用)
echo$this-
echo$this-action-
控制器获取当前模块
$this-module-id
不生成label标签
//ActiveForm类
$form-field($model,'字段名')-passwordInput(['maxlength'=true])-label(false)
Yii2获取接口传过来的JSON数据:
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();
搜索的时候添加条件筛选
$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]);
有两种方式获取查询出来的name为数组的集合[name1,name2,name3]:
方式一:
return\yii\helpers\ArrayHelper::getColumn(User::find()-all(),'name');
方式二:
returnUser::find()-select('name')-asArray()-column();
打印数据:
//引用命名空间
useyii\helpers\VarDumper;
//使用
VarDumper::dump($var);
//使用2第二个参数是数组的深度第三个参数是是否显示代码高亮(默认不显示)
VarDumper::dump($var,10,true);die;
表单验证,只要需要一个参数:
publicfunctionrules()
return[
[['card_id','card_code'],function($attribute,$param){//至少要一个
if(empty($this-card_code)empty($this-card_id)){
$this-addError($attribute,'card_id/card_code至少要填一个');
},'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);
校验point_template_id在PointTemplate是否存在
publicfunctionrules()
return[
[['point_template_id'],'exist',
'targetClass'=PointTemplate::className(),
'targetAttribute'='id',
'message'='此{attribute}不存在。'
Yii给必填项加星
div.requiredlabel:after{
content:
"*";
color:
red;
执行SQL查询并缓存结果
$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);
场景:
数据库有user表有个avatar_path字段用来保存用户头像路径
需求:头像url需要通过域名/作为基本url
目标:提高代码复用
此处/可以做成一个配置
示例:
User.php
classUserextends\yii\db\ActiveRecord
publicfunctionextraFields()
$fields=parent::extraFields();
$fields['avatar_url']=function(){
returnempty($this-avatar_path)'可以设置一个默认的头像地址':'/'.$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'];//输出内容:/头像路径
Model里面rules联合唯一规则
复制代码代码如下:[['store_id','member_name'],'unique','targetAttribute'=['store_id','member_name'],'message'='ThecombinationofStoreIDandMemberNamehasalreadybeentaken.'],
Model多个字段一条规则不同提示
[['name','email','subject','body'],'required','message'='{attribute}必须'],
标量查询
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的值
表单验证,去除首尾空格:
publicfunctionrules()
return[[title','content'],'trim']];
单独为某个Action关闭Csrf验证
新建一个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']会生成nameLIKE'%tester%'。
['like','name','%tester',false]=nameLIKE'%tester'
$query=User::find()-where(['LIKE','name',$id.'%',false]);
SQL随机抽取十名幸运用户
$query=newQuery;
$query-select('ID,City,State,StudentName')
-from('student')
-where(['IsActive'=1])
-andWhere(['not',['State'=null]])
-orderBy(['rand()'=SORT_DESC])
-limit(10);
关于事务:
Yii::$app-db-transaction(function(){
$order=newOrder($customer);
$order-save();
$order-addItems($items);
//这相当于下列冗长的代码:
$transaction=Yii::$app-db-beginTransaction();
try{
$order=newOrder($customer);
$order-save();
$order-addItems($items);
$transaction-commit();
}catch(\Exception$e){
$transaction-rollBack();
throw$e;
批量插入数据
第一种方法
$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和参数):
Yii::$app-request-getPathInfo()
获取不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年农业科学研究与试验发展服务合作协议书
- 电子阅读器开发及内容资源整合方案
- 个人工程劳务协议年
- 2025年悬挂式离子风机项目合作计划书
- 农业生态技术应用示范推广协议
- 2025年杀螨隆项目合作计划书
- 高级管理职务任职证明书(7篇)
- 城市智能停车设施采购协议
- 高端职位任职资历证明书(7篇)
- 城市治理与市政发展反馈试题及答案
- 2024至2030年中国动画产业投资分析及前景预测报告
- 2025年中考历史复习专项训练:世界现代史选择题100题(原卷版)
- 四年级下册语文课外阅读题三(5篇含答案)
- 山东省济南市槐荫区2024年五年级数学第二学期期末学业水平测试试题含解析
- 五年级小数乘法练习题300道及答案
- 万达商家入驻商场合同(2024版)
- 【课件】初心与使命-时代的美术担当+课件-高中美术人美版(2019)美术鉴赏
- DLT 722-2014 变压器油中溶解气体分析和判断导则
- 北师大版五年级下册英语教案
- 铝合金薄板的热处理工艺与性能的研究
- 四川省成都市郫都区2023-2024学年数学五下期末调研试题含解析
评论
0/150
提交评论