在 Laravel 中验证单个变量或数组

key*_*uri 1 validation laravel

我想验证这样的单个变量$name = "example name",但我没有办法处理它,然后我决定将其转换为这样的数组$nameArr = ['name' => 'example name'];,验证器是

$rules =
   $this->validate($nameArr, [
     'name' => 'required|max:10|regex:/^[a-zA-Z0-9]+$/u',
   ], [
      'name.required' => 'name is empty',
      'name.max' => 'name must be more less than 10 letters',
      'name.regex' => 'invalid name'
   ]
 );
Run Code Online (Sandbox Code Playgroud)

但 Laravel 给出了这个错误

传递给 App\Http\Controllers\Controller::validate() 的参数 1 必须是 Illuminate\Http\Request 的实例,给定字符串

Jer*_*dev 5

正确,validateon 函数Controller来自Illuminate\Foundation\Validation\ValidatesRequests并要求第一个参数是请求对象。

如果要验证数组,则必须手动创建验证器

$validator = Validator::make($nameArr, 
    [
        'name' => 'required|max:10|regex:/^[a-zA-Z0-9]+$/u',
    ], 
    [
        'name.required' => 'name is empty',
        'name.max' => 'name must be more less than 10 letters',
        'name.regex' => 'invalid name'
    ]
);

if ($validator->fails()) {
    dd($validator->errors());
}
Run Code Online (Sandbox Code Playgroud)