Laravel 表单验证器的常用的2种使用方法

1、使用控制器的 validate 方法进行参数验证

场景一:前后端未分离

/**
 * 保存一篇新的博客文章。
 *
 * @param Request $request
 * @return Response
 */
public function store(Request $request)
{
  $this->validate($request, [
    'title' => 'required|unique:posts|max:255',
    'body' => 'required',
  ]);

  // 文章内容是符合规则的,存入数据库
}

若验证失败参考:Validation - Laravel 中文网 为 Web 工匠创造的 PHP 框架 

场景二:前后端分离


public function store(Request $request)
{
    try{
        $validatorData = $request->validate([
            'admin_username' => ['required', 'unique:admin_users', 'max:20'],
            'admin_pwd' => ['required', 'max:70'],
            'admin_tel' => ['required', 'unique:admin_users', 'size:11'],
            'auth_id' => ['required'],
        ]);
    } catch (\Exception $exception){
        dump("exception");
        dump($exception->getMessage());//显示一条错误消息(and x more error)
        dd($exception->errors());//一个包含所有错误消息的数组
    }
    dd($validatorData);//验证通过后的数据

    // 文章内容是符合规则的,存入数据库
}

验证失败:

使用try{}catch(){}捕获错误消息

Laravel 表单验证器的常用的2种使用方法_第1张图片

验证通过:

 2、手动创建验证器实例进行验证

2.1 使用默认的验证信息

use Illuminate\Support\Facades\Validator;

public function store(Request $request)
{
    $rules = [
        'admin_username' => ['required', 'unique:admin_users', 'max:20'],
        'admin_pwd' => ['required', 'max:70'],
        'admin_tel' => ['required', 'unique:admin_users', 'size:11'],
        'auth_id' => ['required'],
    ];
    $validator = Validator::make($request->all(), $rules);
    if ($validator->fails()) {
        dump($validator->attributes());//需要验证属性
        dump($validator->valid());//验证通过的(有效的)
        dump($validator->messages());//所有的错误消息
        dump($validator->getMessageBag());//所有的错误消息(同上)
        dd($validator->errors());//所有的错误消息(同上)
    }
    dd($validator);

    // 文章内容是符合规则的,存入数据库
}
2.2 使用自定义的验证信息

举个栗子

/**
 * 添加一个新的用户。
 *
 * @param Request $request
 * @return Response
 */
public function add(Request $request)
{

    $rules = [
        'admin_username' => ['required', 'unique:admin_users', 'max:20'],
        'admin_pwd'      => ['required', 'max:70', Password::min(6)->numbers()->letters()],
        'admin_tel'      => ['required', 'unique:admin_users', 'size:11'],
        'auth_id'        => ['required'],
        'admin_realname' => ['required'],
    ];
    $messages = [
        'admin_username.required'=>':attribute 必填',
        'admin_username.unique'=>':attribute 已存在',
        'admin_username.max:20'=>':attribute 最多20个字符',
        'admin_pwd.required'=>':attribute 必填',
        'admin_pwd.max'=>':attribute 最多70个字符',
        'admin_pwd'=>':attribute 最少6位数,且必须包含字母和数字',
        'admin_tel.required'=>':attribute 必填',
        'admin_tel.unique'=>':attribute 已存在',
        'admin_tel.size'=>':attribute 必须11位数',
        'auth_id.required'=>':attribute 必选',
        'admin_realname.required'=>':attribute 必填',
    ];
    $attributes = [
        'admin_username'=>"用户名",
        'admin_pwd'=>"密码",
        'admin_tel'=>"手机号",
        'auth_id'=>"角色",
        'admin_realname'=>"真实姓名",
    ];
    $validator = Validator::make($request->all(), $rules, $messages, $attributes);
    if ($validator->fails()) {
        return $this->outputError(info: $validator->errors());
    }
    $data = $validator->getData();//获取验证的数据
    $data = $validator->valid();/获取验证通过的(有效的)数据

  // 文章内容是符合规则的,存入数据库
}

你可能感兴趣的:(laravel,php)