获取传参,我们先要引入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官方文档
或者查看这位大佬的博客

最后修改:2019 年 12 月 24 日 04 : 48 PM
如果觉得我的文章对你有用,请随意赞赏