Laravel

时间:2017-07-14 15:57:46

标签: php laravel laravel-5.4 http-status-code-405

我有一个表单,用于创建包含电子邮件,名称和密码输入的用户。该表单还有5个用户地址输入(addr1-5)。

提交没有填写地址字段的表单可以正常工作,并创建用户。

但是,如果您填写地址字段,则会显示405 Method Not Allowed响应。

路线:

Route::group(['prefix' => '/users'], function () {
    Route::post('/create', [
        'uses' => 'UserController@create',
        'as' => 'api_create_user',
    ]);
});

形式:

<form action="{{ route('api_create_user') }}" method="POST">
    ...
    <input type="text" name="addr1">
    <input type="text" name="addr2">
    <input type="text" name="addr3">
    <input type="text" name="addr4">
    <input type="text" name="addr5">
    ...
</form>

控制器:

class UserController extends Controller {
    ...
    public function create (RegisterRequest $request) {
        ...
        $address = [
            'addr1' => $request->input('addr1') ?? '',
            'addr2' => $request->input('addr2') ?? '',
            'addr3' => $request->input('addr3') ?? '',
            'addr4' => $request->input('addr4') ?? '',
            'addr5' => $request->input('addr5') ?? '',
        ];

        $address = (object)array_filter($address);

    $user->address = $address;

        ...
    }
}

RegisterRequest:

class RegisterRequest extends FormRequest {
    ...
    public function rules () : array {
        return array(
        ...
        'addr1' => 'nullable|string',
        'addr2' => 'nullable|string',
        'addr3' => 'nullable|string',
        'addr4' => 'nullable|string',
        'addr5' => 'nullable|string',
        ...
    );
    }
    ...
}

我真的无法解决问题所在。这显然不是语法,我肯定会导入正确的类等。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:-2)

也许您忘记了{{method_field('POST')}}

https://laravel.com/docs/5.4/routing#form-method-spoofing