获取传参,我们先要引入Request类
use Illuminate\Http\Request;
然后在控制器传入request对象
然后从request对象里调用方法获取参数
public function edit(Request $request){
// $data = $request->query();//获取所有get传参
// $data = $request->post();//获取所有post传参
// $data = $request->all();//获取所有参数
$data = $request->input();//获取所有参数
$id = $request->input('id');//获取参数中的id
}
自动验证
use Illuminate\Support\Facades\Validator;
//需要自动验证的数据
$data = [
'id'=>1
];
//需要验证的字段和规则
$rule = [
'id' => 'required|integer',
];
//验证失败时的返回值
$msg = [
'id.required'=>'id不能为空',
'id.integer'=>'请传入正确的id',
];
//执行自动验证
Validator::make($data,$rule,$msg);
//判断是否通过验证
if($validator->fails()){
msg(0,$validator->errors()->first());//获取第一个错误提示 msg函数是封装好的终止并输出提示
}
//获取通过验证的数组 例如数组传入了两个单元 但是只定义了一个字段的验证规则 则这里只返回验证规则的字段,其他将自动过滤
$data = $validator->validated();
自动验证规则文档
这样写起来比较繁琐,通常情况下,我们验证失败,则会exit终止,并且返回给前端状态码加msg
我们可以封装一下
//封装验证函数 利用laravel自动验证
function check($data,$rule,$msg){
$validator = Illuminate\Support\Facades\Validator::make($data,$rule,$msg);
if($validator->fails()){
msg(0,$validator->errors()->first());
}
$data = $validator->validated();
return $data;
}
这样控制器调用的时候,只需要获取所有参数,然后定义好规则和错误提示,传入即可
$data = $request->input();//获取所有请求数据
//定义验证规则
$rule = [
'id' => 'required|integer',
'content' => 'required',
'type'=>'required|in:a,b,c,d,e,f,g',
'from'=>'required',
'by'=>'required',
];
//定义验证失败时,自定义错误信息
$msg = [
'id.required'=>'id不能为空',
'id.integer'=>'请传入正确的id',
'content.required'=>'内容不能为空',
'type.required'=>'类型不能为空',
'type.in'=>'请选择正确的类型',
'from.required'=>'出处不能为空',
'by.required'=>'提交者不能为空',
];
$data = check($data,$rule,$msg);
如果你的路由是定义在web.php里的话,laravel是默认开启了CSRF验证的 post请求时会验证请求是否合法 不合法则返回419错误
所以我们需要在提交的时候,带着X-CSRF-TOKEN
jqery可以直接设置一个默认的ajax请求,都带着这个token,不需要在每个请求里都去写
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': "{{ csrf_token() }}"
}
});
laravel DB类的使用
use Illuminate\Support\Facades\DB;
具体可以查看laravel官方文档
或者查看这位大佬的博客
版权属于:本文是原创文章,版权归 吾梦小站 所有。
本文链接:https://nikm.cn/archives/43.html
本站所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由地转载和修改,但请务必注明文章来源并且不可用于商业目的。