📜  控制器中的 laravel 验证 - PHP (1)

📅  最后修改于: 2023-12-03 15:25:56.420000             🧑  作者: Mango

控制器中的 Laravel 验证

在 Laravel 中,我们可以很方便地在控制器中进行数据验证。在本文中,我们将介绍 Laravel 控制器中的验证。

验证方法

Laravel 提供了多种验证方法,包括基本的输入验证、邮件验证、密码验证、授权验证等等。以下是一些常用的验证方法:

  • exists:验证模型实例是否存在于数据库中
  • unique:验证输入是否唯一
  • numeric:验证输入是否为数字
  • email:验证输入是否为有效的 E-Mail 地址
  • password:验证输入是否是安全的密码
  • date:验证输入是否为有效的日期
  • confirmed:验证两个输入字段是否匹配
  • ...

这些验证方法可以作为控制器方法的参数传入,例如:

public function store(Request $request)
{
    $validatedData = $request->validate([
        'name' => 'required|unique:users|max:255',
        'email' => 'required|email|unique:users|max:255',
        'password' => 'required|confirmed|min:6',
    ]);

    // ...
}
手动验证

除了使用参数验证,我们还可以使用手动验证。手动验证通常更灵活,并且可以更好地控制验证逻辑。手动验证可以通过调用 Validator 类的实例来完成:

use Illuminate\Support\Facades\Validator;

public function store(Request $request)
{
    $validator = Validator::make($request->all(), [
        'name' => 'required|unique:users|max:255',
        'email' => 'required|email|unique:users|max:255',
        'password' => 'required|confirmed|min:6',
    ]);

    if ($validator->fails()) {
        return redirect()->back()
            ->withErrors($validator)
            ->withInput();
    }

    // ...
}
表单请求验证

在控制器中,我们还可以使用表单请求验证。表单请求验证会自动验证请求,如果失败则自动返回错误信息。使用表单请求验证的步骤如下:

  1. 创建一个表单请求类,该类继承自 Illuminate\Foundation\Http\FormRequest,并定义需要验证的规则:
namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreBlogPost extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'title' => 'required|max:255',
            'body' => 'required',
        ];
    }
}
  1. 在控制器中使用表单请求类:
use App\Http\Requests\StoreBlogPost;

public function store(StoreBlogPost $request)
{
    // ...
}

以上就是 Laravel 控制器中的验证方法。无论使用哪种验证方式,我们都需要保证数据的合法性,以提高程序的可靠性。