📜  拉拉维尔 |验证规则

📅  最后修改于: 2022-05-13 01:56:45.818000             🧑  作者: Mango

拉拉维尔 |验证规则

验证来自用户端的数据非常重要,因为它可以帮助用户填写正确的数据并防止他们提交任何不正确或恶意的请求。

在 Laravel 中,有预定义规则的验证规则,在 Laravel 应用程序中使用时。有一个规则列表可用于验证用户提交的数据。

带有验证规则和默认错误消息的 Laravel 表单

  • 语法 1:基本验证规则
    $request->validate([
      'password' => 'required|min:8|max:255',
    ]);
    
  • 语法2:也可以用数组的形式指定规则,如下图。
    $request->validate([
      'password' => ['required', 'min:8', 'max:255'],
    ]);
    
  • 语法 3:您可以指定多个验证字段。
    $request->validate([
      'password' => 'required|min:8|max:255',
    ],
    [
      'name' => ['required', 'min:5', 'max:255'],
    ]);
    
  • 例子:
    1. 在“ resources/views ”目录中创建一个名为“ login.blade”的视图文件。 PHP ' 并在该文件中写入以下代码。
      
      
        
      
          GeeksforGeeks
          
      
        
      
          
              @csrf                  
                       
                   
          
                @foreach($errors->all() as $error)         
      • {{ $error }}
      •         @endforeach     
        

      在这里,我们使用“ @foreach ”指令遍历“ $errors ”变量中的所有验证错误消息。

    2. 在 ' app/Http/Controllers ' 目录中创建一个名为 ' LoginController 的控制器。 PHP '.使用命令' PHP artisan make:controller LoginController '来创建这个控制器。编写以下验证代码来验证表单提交的数据。
      validate([
                  'username' => 'required',
                  'password' => 'required|min:8|max:255',
              ]);
          }
      }
      

      在这里,' required ' 是当用户将该字段留空时给用户一个错误。 ' min ' 是最小字符,' max ' 是可以输入的最大字符。

    3. 在' web.xml'中编写以下代码。 ' routes ' 目录中的PHP ' 文件。
      Route::get('login', 'LoginController@getValidate');
      Route::post('login', 'LoginController@postValidate');
      

      在这里,我们指定了用于显示登录页面视图的“ get ”方法和用于验证用户通过 HTML 表单提交的输入数据的“ post ”方法。

  • 输出:

    当我们点击表单中的提交按钮时,我们得到如上所示的输出。它为空输入字段提供了这两行错误,因为我们在步骤 2中使用“ postValidate ”函数中的“必需”验证规则将这两个字段设置为必需。

    这些是 Laravel 显示的默认错误消息

带有验证规则和自定义错误消息的 Laravel 表单

  • 句法:
    $validateData = $request->validate([
        ‘password’ => ‘required|min:8|max:255’
    ], [
        ‘password.required’ => ‘The password field is required.’,
        ‘password.min’ => ‘The password must have at list 8 characters.’,
        ‘password.max’ => ‘The password cannot exceed 255 characters.’,
    ]);
    
  • 例子:
    1. 在“ resources/views ”目录中创建一个名为“ login.blade”的视图文件。 PHP ' 并在该文件中写入以下代码。
      
      
        
      
          GeeksforGeeks
          
      
        
      
          
              @csrf                  
                       
                   
          
                @foreach($errors->all() as $error)         
      • {{ $error }}
      •         @endforeach     
        

      在这里,我们使用“ @foreach ”指令遍历“ $errors ”变量中的所有验证错误消息。

    2. 在 ' app/Http/Controllers ' 目录中创建一个名为 ' LoginController 的控制器。 PHP '.使用命令' PHP artisan make:controller LoginController '来创建这个控制器。编写以下验证代码来验证表单提交的数据。
      validate([
                  'username' => 'required',
                  'password' => 'required|min:8|max:255',
              ], [
                  'username.required' => 'Username field cannot be empty.',
                  'password.required' => 'Password field cannot be empty.',
                  'password.min' => 
                    'Password must contain at least 8 characters or more.',
                  'password.max' => 
                                'Password must not exceed 255 characters.',
              ]);
          }
      }
      

      在第一个数组中,' required ' 是当用户将该字段留空时给用户一个错误。 ' min ' 是最小字符,' max ' 是可以输入的最大字符。

      在第二个数组中,我们指定了在检查验证规则并发现为真时要显示的错误消息。这意味着当用户名字段留空时,将显示“ username.required ”的错误消息,并且其他所有错误消息都相同。因此,我们必须为我们指定的所有验证规则指定自定义错误消息。

      正如您在上面的代码中看到的,我们指定了4 个验证规则,这就是为什么我们在第二个数组中指定了4 个错误消息

    3. 在' web.xml'中编写以下代码。 ' routes ' 目录中的PHP ' 文件。
      Route::get('login', 'LoginController@getValidate');
      Route::post('login', 'LoginController@postValidate');
      

      在这里,我们指定了用于显示登录页面视图的“ get ”方法和用于验证用户通过 HTML 表单提交的输入数据的“ post ”方法。

  • 输出:

    当我们点击表单中的提交按钮时,我们得到如上所示的输出。它为空输入字段提供了这两行错误,因为我们在步骤 2中使用“ postValidate ”函数中的“必需”验证规则将这两个字段设置为必需。

    这些是我们在“ postValidate ”的第 2 步中设置的自定义错误消息

参考: https://laravel.com/docs/6.x/validation