Laravel 5 - 验证为false时的MethodNotAllowedHttpException

时间:2015-12-19 18:25:41

标签: php validation exception laravel-5

总是在验证失败时,我得到一个MethodNotAllowedHttpException

routes.php

Route::post('download', 'UrlController@download');
Route::post('search', 'UrlController@search');

UrlController.php

public function download(DownloadRequest $request)
{
    dd($request->all());
}

DownloadRequest.php

public function authorize()
{
    return true;
}

 public function rules()
{
    return [
        'format' => 'required|between:1,13'
    ];
}

name.blade.php

{!! Form::open(['url' => 'download']) !!}

{!! Form::select('format', [
    'Please select format',
    'FormatGrp1' => [1 => 'best', 'p1','p2', 'p3', 'p4'],
    'FormatGrp2' => [6 => 'p5', 'p6']
]) !!}

何时"请选择格式"选择并提交表单,我总是会收到此错误,因为"请选择格式"值为0,i指定的值必须介于1和13之间。(查看DownloadRequest.php)

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

错误并非来自验证。

这是因为它调用了URL返回并显示错误。这是搜索方法。

因此,搜索方法中的逻辑原因引发了异常。

答案 1 :(得分:0)

出现此错误时,请在您的for (int i = 0; i < listname.size(); i++) { comboname.removeAllItems(); comboname.addItem(listname.get(i)); } 中考虑您将要第一次打开正在处理的视图,并添加if ($validator->fails()) { }

例如:

->withErrors($validator)

答案 2 :(得分:-1)

我并没有完全理解这个用户试图解释的实际问题或解决方案 - 我遇到了这个问题,因为我遇到了同样的问题并且认为我会描述我在错误中所做的事情以及我是如何做的解决了......

对我来说,我正在建立一个用户提交照片的网站。当用户点击&#34;添加照片&#34;它把他们带到了一个页面,他们必须检查一个框以接受法律免责声明。带有复选框的此表单是POST请求。在他们接受之后,他们会被重新定向到照片提交页面...这也是一个有帖子请求的表格。这是我的问题:背靠背POST请求页面。如果用户在提交表单上输入了无效数据,或者没有在一个字段中输入数据,则Laravel会尝试基本上按下&#34;后退按钮&#34;在浏览器中保持表单填充用户输入的数据。问题是&#34;返回&#34;按钮(或用户访问此页面的方式)来自POST请求,因此无法执行此操作。它给了我上面描述的错误。一旦我将合法接受页面切换到GET请求表单并更新了路由以匹配一切正常工作。这对我来说是一个愚蠢的错误,我只是希望能够减轻其他人的挫败感,因为他们正在学习在Laravel中发展。祝你有美好的一天!