laravel request 类进行form表单验证

为了简化controller参数验证,我们单独建立一个文件夹,作为我们参数层验证;具体异常抛出,以及Form 

首先在app\http的文件夹下创建一个新的文件件Requests,进入新创建的文件夹Requests,可以在创建一个文件夹Nav,用于区分不同业务的功能。也可以不用创建

在新创建的文件夹下,创建一个类,例如NavRequest

<?php
 
namespace App\Http\Requests\Nav;
 
use Illuminate\Foundation\Http\FormRequest;
 
class NavRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }
 
    public function rules()
    {
        $rules = [
            'h5_id' => 'required |exists:h5_template,h5_id',
            'font_color'=>'string|nullable',
            'select_color'=>'string|nullable',
            'background_color'=>'string|nullable',
            'position'=>'int|required| between:0,1'
        ];
        return $rules;
    }
 
    public function messages()
    {
        $message = [
            'h5_id.required'      =>'h5_id必须填写',
            'h5_id.exists'      =>'h5_id不存在!',
            'position.required'      =>'请选择位置!'
        ];
        return $message;
    }
 
}
//第一个方法:authorize(),控制用户访问权限
//第二个方法:$rules(),返回验证的数组
//第三个方法:$message(),返回自定义的错误信息

然后创建一个控制器例如UserController

<?php
namespace App\Http\Controllers;

use App\Http\Requests\Nav\NavRequest;

public function index(NavRequest $request)  //使用刚刚创建的Request类
    {
        $data = $request->all();
        dd($data);
    }

但是此时出现了一个问题,就是无论怎么样,都不会提示报错信息,而只是不合乎要求就返回首页

这时我们可以重写FormRequest这个类的方法

例如:创建一个RequestController类继承FormRequest并重写其中的方法

//1.在这里可以重新定义一个requestController类,,
//2.然后让他继承 FormRequest,
//3.最后重写FormRequest这个基类的failedvalidation方法。另一种方法就是直接到FormRequeste类中将该方法进行更改也可以
class RequestController extends FormRequest { protected function failedValidation(Validator $validator) { $error= $validator->errors()->all(); throw new HttpResponseException(response()->json(['msg'=>'error','code'=>'500','data'=>$error[0]], 500)); } } 这样当你的参数不符合要求时就可以返回相对应的错误信息了

 

转载于:https://www.cnblogs.com/hanmengya/p/11486858.html

### 实现Laravel中的请求验证 在Laravel中实现请求验证是一个简单而强大的过程,这有助于确保应用程序接收到的数据符合预期的标准。当创建表单或API端点时,可以利用内置的验证功能来处理传入数据。 #### 使用控制器方法内的内联验证 对于简单的场景,在控制器的方法内部直接定义验证逻辑是一种快速的方式: ```php public function store(Request $request) { // 验证规则数组 $validatedData = $request->validate([ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); // 如果验证通过,则继续业务逻辑... } ``` 此代码片段展示了如何指定字段`title`和`body`必需存在,并且`title`还应唯一于`posts`表并最多包含255个字符[^1]。 #### 创建自定义请求 为了保持更好的可维护性和重用性,建议为复杂的验证需求创建专门的Form Request对象。可以通过Artisan命令生成这样的文件: ```bash php artisan make:request StoreBlogPostRequest ``` 之后可以在新创建的请求中设置授权和验证规则: ```php class StoreBlogPostRequest extends FormRequest { public function authorize() { return true; // 只有认证用户才能提交博客文章? } public function rules() { return [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]; } } // 控制器中使用该请求作为参数型提示 public function store(StoreBlogPostRequest $request) { // 请求已成功验证... Post::create($request->all()); return redirect('/posts'); } ``` 这种方式不仅使代码更加整洁有序,而且允许轻松扩展额外的功能,比如自定义错误消息、条件验证等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值