Laravel自定义请求验证不起作用

时间:2020-08-20 16:55:07

标签: laravel laravel-7

我正在尝试通过创建自定义表单请求来使用表单Laravel请求验证。这是我的代码段

api.php

Route::group(['namespace' => 'User'], function () {
  Route::put('user/{user}', 'UpdateUserGeneralInfoController@UpdateUserGeneralInfo');
});

UpdateUserGeneralInfoController.php

use App\Http\Controllers\Controller;
use App\Http\Requests\User\UpdateUserGeneralInfoRequest;

class UpdateUserGeneralInfoController extends Controller
{
   public function UpdateUserGeneralInfo(UpdateUserGeneralInfoRequest $request,User $user)
   {
      $user->name = $request->name;
      $user->email = $request->email;
      $user->date_of_birth = $request->date_of_birth;
      $user->save();

      $response = [
          'message' => 'User info updated successfully'
      ];

      return response($response, 201);

    }
 }

UpdateUserGeneralInfoRequest.php

namespace App\Http\Requests\User;
use Illuminate\Foundation\Http\FormRequest;

class UpdateUserGeneralInfoRequest extends FormRequest
{
  public function authorize()
  {
     return true;    
  }

  public function rules()
  {
     return [
        'name' => 'required|max:50',
        'email' => 'required',
        'date_Of_birth' => 'required'
     ];
  }

  public function messages()
  {
    return [
        'name.required' => 'Name is required',
        'email.required' => 'An email is required',
        'date_Of_birth' => 'Date of Birth is required'
    ];
  }
}

文件夹结构为

enter image description here

我正在尝试通过邮递员测试请求。这是我的json输入

{
  "id" : 1,
  "name":"Osman Rafi",
  "email": "rafi@devport.com",
  "current_address": "House-26,Islampur R/A, Mejortila, Sylhet-3100,Bangladesh",
  "bio": "But a man is not made for defeat. A man can be destroyed,but not defeated.",
  "linkedin": "linkedin.com/in/osman-goni-chowdhury-bb421a16b",
  "facebook": "https://www.facebook.com/osman.rafi140",
  "github": "https://github.com/Osman-Rafi",
  "blood_group": "O(+ve)",
  "password": "111111"
}

它显示了我

404 | Not Found

如果我尝试将其作为控制器,它将非常完美

public function UpdateUserGeneralInfo(Request $request,User $user)
{
}

1 个答案:

答案 0 :(得分:0)

您必须在请求中传递所有这三个变量(您缺少date_Of_birth):

'name' => 'required|max:50',
'email' => 'required',
'date_Of_birth' => 'required'

但是,我认为您的错误来自其他几个地方,因为未找到404来自链接中未找到的路由。

添加了要呼叫的路由后,您是否清除了路由缓存:

尝试

php artisan route:cache

还添加

'name.required' => 'Name is required',
'email.required' => 'An email is required',
'date_Of_birth' => 'Date of Birth is required'

出生日期。