本文实例总结了YII框架常用技巧。分享给大家供大家参考,具体如下:
获取当前Controller name和action name(在控制器里面使用)
echo $this->id; echo $this->action->id;
控制器获取当前模块
$this->module->id
不生成label标签
// ActiveForm类 $form->field($model, '字段名')->passwordInput(['maxlength' => true])->label(false)
Yii2 获取接口传过来的 JSON 数据:
Yii::$app->request->rawBody;
防止 SQL 和 Script 注入:
use yii\helpers\Html; use yii\helpers\HtmlPurifier; echo Html::encode($view_hello_str) //可以原样显示<script></script>代码 echo HtmlPurifier::process($view_hello_str) //可以过滤掉<script></script>代码
大于、小于条件查询
// SELECT * FROM `order` WHERE `subtotal` > 200 ORDER BY `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');
方式二:
return User::find()->select('name')->asArray()->column();
打印数据:
// 引用命名空间 use yii\helpers\VarDumper; // 使用 VarDumper::dump($var); // 使用2 第二个参数是数组的深度 第三个参数是是否显示代码高亮(默认不显示) VarDumper::dump($var, 10 ,true);die;
表单验证,只要需要一个参数:
public function rules()
{
  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],
  ];
}
SQL is not null条件查询
// ['not' => ['attribute' => null]]
//['ISNULL(`attribute`)'=>true]
$query = new Query;
$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);
      内容版权声明:除非注明,否则皆为本站原创文章。
