Laravel 全局定义通用请求字段的规则

Laravel 全局定义通用请求字段的规则,laravel,validation,Laravel,Validation,在我的Laravel5.7应用程序中,我有几个请求收集常用信息-姓名、电子邮件、电话等 是否有一种有效的方式在应用程序级别为这些公共或“全局”字段定义与请求级别相应的验证规则,以便更好地管理这些字段 目前,更新验证意味着处理每个请求 除了为每个字段创建规则并在每个请求的开头导入它们之外,我看不到一种优雅的方法来实现这一点。也许您可以使用中间件来实现这一点: 我没有一个例子,但我认为这样做可以奏效: 首先创建一个中间件: php artisan make:middleware CheckCommo

在我的Laravel5.7应用程序中,我有几个请求收集常用信息-姓名、电子邮件、电话等

是否有一种有效的方式在应用程序级别为这些公共或“全局”字段定义与请求级别相应的验证规则,以便更好地管理这些字段

目前,更新验证意味着处理每个请求


除了为每个字段创建规则并在每个请求的开头导入它们之外,我看不到一种优雅的方法来实现这一点。

也许您可以使用中间件来实现这一点:

我没有一个例子,但我认为这样做可以奏效:

首先创建一个中间件:

php artisan make:middleware CheckCommonFields
然后验证您的请求是否包含“公共请求字段”

将中间件添加到Kernel.php
$routeMiddleware

protected $routeMiddleware = [
        ...
        'commonFields' => \App\Http\Middleware\CheckCommonFields::class,
    ];
最后,在web.php(或api.php或whatever.php)中为这些验证规则所涉及的路由添加中间件:


嗨,我希望这就是你要找的,如果不是,我道歉

对于通用验证,我创建了一个请求表单-

如果您使用类似于
php artisan make:request ExampleFormRequest的东西,这将在Http文件夹中创建相关的文件夹“Requests”

在文件ExampleFormRequest中,您可以指定规则,然后在控制器中多次验证相同的内容

e、 g

等等,您可以在Methods参数中调用请求表单,如下所示:

public function store(ExampleFormRequest $request)
{
    ...
}

我希望这有帮助:)

这是常见的方法。我想他不想对每个请求都这样做。正确的,我已经对我的所有请求使用了请求,但是它们都包含我想抽象出来的公共字段,以使管理它们或添加它们更容易。我同意,这是常见的方法-但是将其与您自己的配置或定义的常量相结合怎么样?毕竟,我们基本上是在处理字符串。或者你希望得到某种。。。全局请求验证器?@ironchefbadass使用中间件有什么问题吗?@louis如果您想分享一个示例,我不适合探讨它。我不知道中间件可以以这种方式使用。总是乐于学习新事物,对此我深表感激。我将在dev中检查它,并跟进/将其标记为已回答。谢谢。路易斯,有什么理由为每个请求字段检查复制验证程序失败逻辑吗?干涸让我毛骨悚然。我只是给了你一个方法,你可以在米德尔沃克做任何你想做的事,谢谢
Route::post(/whatever/you/want, 'WhateverController@action')->name('whatever')->middleware('commonFields');
    'name' => 'required|unique:posts|max:255',
    'email' => 'required|email|unique:users',
    'address' => 'required|string|max:500'
public function store(ExampleFormRequest $request)
{
    ...
}