使用Laravel表单请求验证时调用的不同方法

时间:2019-04-09 23:40:33

标签: php laravel routes

我有一个名为API\Fields的控制器(store),该方法的路由设置如下:

POST /api/templates/{template}/fields -> API\Fields@store

一切正常,直到我使用以下规则创建了一个非常简单的表单请求验证类(除了authorize方法的返回值之外,这是我唯一更改的内容):< / p>

    return [
        'name'          =>  ['required', 'alpha_num'],
        'coordinates'   =>  ['required', 'json'],
        'type'          =>  ['required', BaseField::RULE],
        'page'          =>  ['required', 'numeric'],
        'readonly'      =>  ['sometimes', 'boolean'],
        'required'      =>  ['sometimes', 'boolean']
    ];

创建类之后,我将请求类从Request更改为CreateFieldsRequest,这使该路由的整个路由几乎混乱了。 Laravel似乎没有呼叫store,而是呼叫了index。当我将CreateFieldsRequest恢复到Request类时,它的行为又恢复了。

我无法找到有关此主题的任何信息,而且我已经一遍又一遍地验证了我在任何相关类上都没有某种不正确的路由或重定向。

对此将提供任何帮助或指导,谢谢!

2 个答案:

答案 0 :(得分:0)

运行一个非常简单的测试后,我意识到这似乎是 Postman 的问题。如果遇到此问题,请坚持在POST正文上添加一个_method=POST参数,或者干脆使用XHR或其他API测试工具。

编辑:进一步测试后,我意识到该问题尚未解决。当我通过Chrome开发者控制台将请求作为POST请求运行时,Laravel将其作为“ GET”请求踢回,不确定原因。

答案 1 :(得分:0)

  

当我通过Chrome开发者控制台将请求作为POST请求运行时,Laravel将其作为“ GET”请求将其踢回,不知道为什么。

未通过验证issues a redirectFormRequest。这是默认行为。

如果您发出AJAX请求或请求带有Accept标头的JSON响应,它将为respond with a JSON list of validation errors and a 422 HTTP code instead

相关问题