📅  最后修改于: 2023-12-03 15:32:35.694000             🧑  作者: Mango
在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()
方法是最重要的,它规定了所有字段的验证规则。在上面的代码中,我们在name
和email
字段上设置了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中自己的好习惯,它将使将来的维护和扩展变得简单,因为您可以轻松地维护每个请求的验证逻辑。