Php Laravel 5.4执行POST请求时获取方法不允许HttpException

Php Laravel 5.4执行POST请求时获取方法不允许HttpException,php,laravel,laravel-5.4,Php,Laravel,Laravel 5.4,我正在做一个从db表中获取用户的项目。我正在尝试创建一个更新方法-saveUpdateItems(),并在提交时合并表单验证。但每当我提交不完整的字段时,我就会得到MethodNotAllowedHttpException。我还创建了一个方法-SaveItems(),用于保存新记录,并合并了表单验证,但没有出现错误。我对拉雷维尔还不太熟悉。知道我为什么会出错吗?下面是一段代码 public function ValidateFormInput($request){ return

我正在做一个从db表中获取用户的项目。我正在尝试创建一个更新方法-saveUpdateItems(),并在提交时合并表单验证。但每当我提交不完整的字段时,我就会得到MethodNotAllowedHttpException。我还创建了一个方法-SaveItems(),用于保存新记录,并合并了表单验证,但没有出现错误。我对拉雷维尔还不太熟悉。知道我为什么会出错吗?下面是一段代码

public function ValidateFormInput($request){
        return $this->validate($request, [
            'name' => 'required',
            'email' => 'required',
            'password' => 'required',
            'role' => 'required',
        ]);
    }

public function SaveUpdatedItems(Request $request){
   $this->ValidateFormInput($request);
}

public function SaveItems(Request $request){

        $this->ValidateFormInput($request);
}
路线:

Route::post('/manage/user/save', 'UserController@SaveItems');
Route::post('/manage/user/saveupdated','UserController@SaveUpdatedItems');
更新-user.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-12">
            <div class="panel panel-default">
                <div class="panel-heading">
                     <div class="navbar-container">
                        {!! Menu::get('MyNavBar')->asUl(
                            ['class' => 'nav navbar-nav nav-pills'],
                            ['class'=>'dropdown-menu']
                        ) !!}
                    </div>
                </div>

                <div class="panel-body">
                    <h2>Update User</h2>

                     @if ($errors->any())
                        <div class="alert alert-danger">
                            <ul>
                                @foreach ($errors->all() as $error)
                                    <li>{{ $error }}</li>
                                @endforeach
                            </ul>
                        </div>
                    @endif

                    {{Form::open(array('action' => 'UserController@SaveUpdatedItems', 'method' => 'post','files' => true))}}
                    {{ Form::hidden('_token', csrf_token() ) }}
                    @foreach($items as $item)
                     {{ Form::hidden('id[]', $item->id) }}
                     <table class="table table-striped table-bordered table-hover table-sm">
                        <tbody>
                            <tr>
                                <td>Name:</td>
                                <td>{{ Form::text('name', $item->name ,array('class' => 'form-control')) }}</td>
                            </tr>
                            <tr>
                                <td>Email:</td>
                                <td>{{ Form::text('email', $item->email, array('class' => 'form-control')) }}</td>
                            </tr>
                            <tr>
                                <td>Password:</td>
                                <td>{{ Form::password('password', array('class' => 'form-control')) }}</td>
                            </tr>
                            <tr>
                                <td>Role:</td>
                                <td>{{Form::select('role', $roles , null ,['class' => 'form-control'])}}</td>
                            </tr>
                            <tr>
                                <td>Active (?):</td>
                                <td>{{Form::select('is_active' , array('' => '-----', 1 => 'Yes', 0 => 'No'),  $item->is_active,['class' => 'form-control'])}}</td>
                            </tr>
                            <tr>
                                <td>Aprroved (?):</td>
                                <td>{{Form::select('is_approved', array('' => '-----', 1 => 'Yes', 0 => 'No'), $item->is_approved, ['class' => 'form-control'])}}</td>
                            </tr>


                        </tbody>
                    </table>
                    @endforeach
                    <button type="submit" class="btn btn-primary">Submit</button>
                    {!! Form::close() !!}
                    <br>
                    <a href="/manage/user"> <button type="submit" class="btn btn-primary">View Users</button></a>
                </div>
            </div>
        </div>
    </div>
</div>

@endsection

@section('scripts')
    <script type="text/javascript">
        $(document).ready(function(){

        });
</script>
@endsection
@extends('layouts.app'))
@节(“内容”)
{!!Menu::get('MyNavBar')->asUl(
['class'=>'导航栏导航丸'],
['class'=>'dropdown-menu']
) !!}
更新用户
@如果($errors->any())
    @foreach($errors->all()作为$error)
  • {{$error}}
  • @endforeach
@恩迪夫 {{Form::open(数组('action'=>)UserController@SaveUpdatedItems“,”方法“=>”发布“,”文件“=>true”)} {{Form::hidden(''u-token',csrf'u-token())} @foreach($items作为$item) {{Form::hidden('id[]',$item->id)} 姓名: {{Form::text('name',$item->name,array('class'=>'Form control'))} 电邮: {{Form::text('email',$item->email,数组('class'=>'Form control'))} 密码: {{Form::password('password',array('class'=>'Form control'))} 角色: {{Form::select('role',$roles,null,['class'=>'Form control'])} 活动(?): {Form::select('is_active',array(''=>'----',1=>'Yes',0=>'No'),$item->is_active,['class'=>'Form control'])} 批准(?): {Form::select('is_approved',array(''=>'----',1=>'Yes',0=>'No'),$item->is_approved,['class'=>'Form control'])} @endforeach 提交 {!!Form::close()!!}
@端部 @节(“脚本”) $(文档).ready(函数(){ }); @端部
验证失败时,Laravel会将您重定向回提交无效数据的页面。此重定向将是一个GET请求


因此,如果您恰好位于只能通过POST访问的页面上,然后您提交了一个有验证错误的表单,您将通过get请求重定向回该页面,导致
MethodNotAllowedHttpException
错误。

发布您的路由和表单本身。可能您的路由正在被另一个路由删除。如果必须检查,则只有一个-route::post('/manage/user/saveupdated','UserController@SaveUpdatedItems');显示
更新user.blade.php
视图的路由和控制器操作是什么?啊哈。有意义:-)那么你建议我如何解决这个问题?@wendecat好吧,最好的选择是重组一切,使你符合正常的资源路由。亚当·沃特汉给了你这个想法。但是,这可能需要一些时间和精力。如果您只是想快速解决此问题,只需允许您的路由也处理get请求。谢谢您提供的信息。只是改变了路线去了。那样一切都简单多了。这只是一个愚蠢的错误。谢谢