Yii2 项目开发的常用技巧总结
内容目录
工欲善其事必先利其器,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
});
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...