📜  laravel 添加请求 - PHP (1)

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

Laravel添加请求

在Laravel中,您可以通过添加请求来验证来自表单或其他HTTP请求的输入。这允许我们使用Laravel提供的便利的验证器,并将错误返回给用户。在本文中,我们将介绍如何在Laravel中添加请求,并从中获得最大的利益。

创建请求

要创建新的请求,请使用以下Artisan命令:

php artisan make:request MyRequest

这将创建一个位于app/Http/Requests目录中的新请求类MyRequest。打开该文件并编写规则:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

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

    public function rules()
    {
        return [
            'name' => 'required|max:255',
            'email' => 'required|email|unique:users,email',
            'password' => 'required|min:6|confirmed',
        ];
    }
}

在上面的代码中,您可以看到authorize()方法始终返回true。这是请求授权的位置,您可以在其中执行身份验证。如果请求需要进行身份验证,则应该将这个方法覆盖为返回相应的布尔值。

rules()方法是最重要的,它规定了所有字段的验证规则。在上面的代码中,我们在nameemail字段上设置了required规则,并要求email字段确保在users表中唯一。

您还可以添加其他方法,例如messages()attributes(),以自定义错误消息和属性名称。这里不再赘述,但是您可以在Laravel文档中找到更多细节。

使用请求

现在您已经创建了请求,接下来您需要使用它。在您的控制器中,您可以使用依赖注入方式注入该请求,然后在代码中使用它:

<?php

namespace App\Http\Controllers;

use App\Http\Requests\MyRequest;

class MyController extends Controller
{
    public function myMethod(MyRequest $request)
    {
        // 请求通过验证,可以使用请求中的输入数据
    }
}

在上述代码中,我们注入了MyRequest类,并在$request变量中接收了它。如果请求通过验证,则您可以在控制器方法中使用该请求中的输入数据(例如$request->input('name'))。

如果请求未通过验证,则Laravel将自动执行适当的逻辑,并返回错误消息给用户。要自定义错误响应,请重写请求类中的failedValidation()方法:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;

class MyRequest extends FormRequest
{
    // ...

    protected function failedValidation(Validator $validator)
    {
        // 自定义响应
    }
}

在这个方法中,您可以自定义响应,例如以JSON格式返回错误消息。

结论

现在,您已经知道如何在Laravel中添加请求来验证输入。请求让您可以利用Laravel内置的验证器非常轻松地验证数据,并返回错误消息给用户。此外,您可以自定义请求,以实现自己的逻辑。

正如您在上面的示例中所看到的,要将请求注入到控制器方法中非常容易。添加请求是Laravel中自己的好习惯,它将使将来的维护和扩展变得简单,因为您可以轻松地维护每个请求的验证逻辑。