用于验证的自定义请求类给出 405 Method Not allowed Laravel 10

问题描述 投票:0回答:1

我正在尝试使用 store 方法存储数据并使用

VendorStoreRequest
类进行验证。但是,我收到 : 405 Method Not allowed 错误。 当我更改为正常 Illuminate Request 时,它可以工作。

出现错误

use App\Http\Requests\VendorAccount\VendorStoreRequest;
...
public function store(VendorStoreRequest $request)
{
    return response()->json($request, 200);
}

工作正常

use Illuminate\Http\Request;
...
public function store(Request $request)
{
    return response()->json($request, 200);
}

我正在使用资源 api 路由。

Route::prefix('vendor')->group(function () {
    Route::apiResource('/', VendorController::class)->parameters(['' => 'vendor']);
});

VendorStoreRequest.php

<?php

namespace App\Http\Requests\VendorAccount;

use Illuminate\Foundation\Http\FormRequest;

class VendorStoreRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name' => 'required|min:5',
            'email' => 'required|unique:vendors|email',
            'phone' => 'required|digits:11|numeric|unique:vendors',
            'business_phone' => 'required|digits:11|numeric|unique:vendors',
            'password' => 'required|min:6',
            'business_name' => 'required|unique:vendors',
            'trade_licence_no' => 'required|regex:/^[0-9]+$/|max:20|unique:vendors',
            'bank_account_no' => 'required|regex:/^[0-9]+$/|max:20|unique:vendors',
            'nid' => 'required|digits_between:10,13|unique:vendors',
            'image' => 'required|image|mimes:jpg,png,jpeg'
        ];
    }

    public function messages()
    {
        return [
            'name.min' => 'Name should be at least 5 characters',
            'phone.digits' => 'Phone number is not valid',
            'phone.unique' => 'Phone number has already been taken',
            'business_phone.digits' => 'Business phone number is not valid',
            'business_phone.unique' => 'Business phone number has already been taken',
            'password.min' => 'Password should be at least 6 characters',
            'business_name.unique' => 'Business name has already been taken',
            'trade_licence_no.regex' => 'Trade licence number is not valid',
            'trade_licence_no.unique' => 'Trade licence number is duplicate',
            'bank_account_no.regex' => 'Bank account number is not valid',
            'bank_account_no.unique' => 'Bank account number is duplicate',
            'nid.digits_between' => 'NID number is not valid',
            'nid.unique' => 'NID number is duplicate',
            'nid.digits_between' => 'NID number is not valid',
        ];
    }
}
laravel laravel-routing laravel-10 laravel-request
1个回答
0
投票

假设

VendorStoreRequest
扩展了
Illuminate\Foundation\Http\FormRequest
有一个
authorize
方法允许对是否允许用户存储此信息进行一些额外的控制(Laravel10 的文档)。如果您不想做任何额外的检查,只需返回 true 即可。

public function authorize()
{
    return true;
}
© www.soinside.com 2019 - 2024. All rights reserved.