【发布时间】:2020-12-10 01:40:54
【问题描述】:
我正在尝试通过创建自定义表单请求来使用表单 Laravel 请求验证。这是我的代码 sn-p
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'
];
}
}
文件夹结构是
我正在尝试通过 Postman 测试请求。所以这是我的 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)
{
}
【问题讨论】:
-
运行
php artisan route:list并将您的PUTing 从PostMan到输出的路线进行比较。还要确保您的users表中有一行id为 1。此处的 404 可能表示未找到路由或没有给定 ID 的用户记录。 -
错字:
$request->date_of_birth在您的控制器中,'date_Of_birth'在您的表单请求中 -
你在邮递员中使用了
api前缀吗? -
用户表有一行id为1,路由和邮递员url相同,也添加了api前缀但问题仍然存在
-
当验证失败时您似乎被重定向并导致 404。如果您通过验证会发生什么??