Yii2 项目开发的常用技巧总结

Programming2年前 (2022)更新 bruce
155 0
内容纲要

工欲善其事必先利其器,Yii2框架的特点适合中大型项目开发快速,能快速市场验证,性能可控。这里总结平时开发会经常用到的技巧,可能你会用得到。

常用概念备忘和更正

  • 用Yii::$app->end() 或 Yii::$app->response->send(),在actionXXX还是init方法都能终止代码。使用return只能在action终止代码,是因为在init()里仅仅是代码的执行,return只是代码返回,这样实际会继续执行下去。
  • render会渲染layout,而renderPartial不会渲染。如果你Ajax异步、iframe获取很大的HTML片段需要用的view文件,那么选择renderPartial。

调试偏

直接打印AR或者model查询的Sql语句,

$query = User::find() ->select(['username'])->where(['id'=>[1,2,3,4])
// get the AR raw sql in YII2
$commandQuery = clone $query;
echo $commandQuery->createCommand()->getRawSql();$users = $query->all();

我们经常用到的基本打印

//引用命名空间
use yii\helpers\VarDumper;
//使用
VarDumper::dump($var);
//使用2  第二个参数是数组的深度  第三个参数是是否显示代码高亮(默认不显示)
VarDumper::dump($var, 10 ,true);

如果你感觉这些代码输入起来非常麻烦,可以在helpers.php文件内,添加别名封装函数

if (!function_exists('dd')) {
    function dd(...$param)
    {
        foreach ($param as $p) {
            \yii\helpers\VarDumper::dump($p, 10, true);
            echo '<pre>';
        }
        exit(1);
    }
}

存储缓存

网络开发调试

Web 安全

关于CSRF验证

# 关闭Csrf,除非必要,否则不推荐
public function init(){
    $this->enableCsrfValidation = false;
}

# 普通提交,form表单中加入隐藏域
<input name="_csrf" type="hidden" id="_csrf" value="<?= Yii::$app->request->csrfToken ?>">

# Ajax异步提交,在HTML的mete标签加入csrf-token值,赋值给_csrf字段提交给服务端
var csrfToken = $('meta[name="csrf-token"]').attr("content");
$.ajax({
  type: 'POST',
  url: url,
  data: {_csrf:csrfToken},
  success: success,
  dataType: dataType
});
© 版权声明

相关文章

暂无评论

暂无评论...