【问题标题】:laravel validation method returns an errorlaravel 验证方法返回错误
【发布时间】:2021-03-03 09:23:31
【问题描述】:

我正在尝试使用此验证一些输入:

$request->validate([
        'prenom' => 'required',
        'nom' => 'required',
        'telephone' => ['required | regex:/^(?:(?:(?:\+|00)212[\s]?(?:[\s]?\(0\)[\s]?)?)|0){1}(?:5[\s.-]?[2-3]|6[\s.-]?[13-9]){1}[0-9]{1}(?:[\s.-]?\d{2}){3}$/|digits:10'],
        'password' => 'required |string|min:8|confirmed',
        'confirm_pass' => 'required',
        'email' => 'required|email|max:255|string|unique:users'
            ]);

但它给了我一个错误:

方法 Illuminate\Validation\Validator::validateRequired|Regex 确实 不存在。

请知道如何解决它?!

【问题讨论】:

  • 你使用的是什么版本的 Laravel?
  • @MhluziBhaka laravel 8

标签: php laravel


【解决方案1】:

管道| 符号在您的正则表达式模式中可用,因此它与分隔符冲突。使用正则表达式模式时,可能需要在数组中指定规则而不是使用管道分隔符,请将代码更改为:

'telephone' => array(
      'required',
      'regex:/^(?:(?:(?:\+|00)212[\s]?(?:[\s]?\(0\)[\s]?)?)|0){1}(?:5[\s.-]?[2-3]|6[\s.-]?[13-9]){1}[0-9]{1}(?:[\s.-]?\d{2}){3}$/',
      'digits:10'
)

【讨论】:

    【解决方案2】:
    $validatedData = $request->validate([
            'prenom' => 'required',
            'nom' => 'required',
            'telephone' => ['required | regex:/^(?:(?:(?:\+|00)212[\s]?(?:[\s]?\(0\)[\s]?)?)|0){1}(?:5[\s.-]?[2-3]|6[\s.-]?[13-9]){1}[0-9]{1}(?:[\s.-]?\d{2}){3}$/|digits:10'],
            'password' => 'required |string|min:8|confirmed',
            'confirm_pass' => 'required',
            'email' => 'required|email|max:255|string|unique:users'
                ]);
    

    【讨论】:

    • 请在您的答案中添加一些解释,以便其他人可以从中学习 - 您改变了什么,为什么?
    【解决方案3】:
    use Validator;
    

    添加到控制器之上

    【讨论】:

    • 请在您的答案中添加一些解释,以便其他人可以从中学习 - 是什么让您认为任何类 Validator 都存在于根命名空间中?
    猜你喜欢
    • 2018-12-26
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 2016-07-31
    • 1970-01-01
    • 2013-12-27
    相关资源
    最近更新 更多