Laravel-此路线不支持PUT方法。支持的方法:GET,HEAD

时间:2019-12-10 08:12:44

标签: laravel crud

我正在使用Laravel-5.8开发Web应用程序。在CRUD中,我能够创建和查看记录。但是,我在更新和删除时遇到问题。

控制器

class HrHolidayGroupsController extends Controller
{

public function index()
{
    $userCompany = Auth::user()->company_id;
    abort_unless(\Gate::allows('holiday_group_access'), 403);
    if (auth()->user()->isAdmin()) {
        $groups = HrHolidayGroup::all();
    } else {
        $groups = HrHolidayGroup::where('company_id', $userCompany)->get();
    }
    return view('hr.holiday_groups.index')->with('groups', $groups);
}

public function create()
{
    $userCompany = Auth::user()->company_id;
    abort_unless(\Gate::allows('holiday_group_create'), 403);
    return view('hr.holiday_groups.create');
}
public function store(StoreHolidayGroupRequest $request)
{
    abort_unless(\Gate::allows('holiday_group_create'), 403);

    $group = HrHolidayGroup::create([
        'group_name'         => $request->group_name,
        'description'       => $request->description,
        'company_id'        => Auth::user()->company_id,
        'created_by'        => Auth::user()->id,
        'created_at'        => date("Y-m-d H:i:s"),
        'is_active'         => 1,
    ]);
    Session::flash('success', 'Holiday Group is created successfully');
    return redirect()->route('hr.holiday_groups.index');
} 
    public function show($id)
    {
        abort_unless(\Gate::allows('holiday_group_show'), 403);   
        return view('hr.holiday_groups.show', ['group' => HrHolidayGroup::findOrFail($id)]);
    }

public function edit($id)
{
    $userCompany = Auth::user()->company_id;

    abort_unless(\Gate::allows('holiday_group_edit'), 403);
    $group = HrHolidayGroup::where('id', $id)->first();       
    return view('hr.holiday_groups.edit')->with('group', $group);
}

public function update(UpdateHolidayGroupRequest $request, $id)
{

    abort_unless(\Gate::allows('holiday_group_edit'), 403);

    $group = HrHolidayGroup::find($id);                            
    $group->group_name = $request->group_name;
    $group->description = $request->description;
    $group->company_id = Auth::user()->company_id;
    $group->updated_by = Auth::user()->id;
    $group->updated_at = date("Y-m-d H:i:s");
    $group->is_active = 1;
    $group->save();
    Session::flash('success', 'Holiday Group is updated successfully');
    return redirect()->route('hr.holiday_groups.index');
}

public function destroy(Request $request, $id)
{
    $group = HrHolidayGroup::find($id);
    $group->delete();
    Session::flash('success', 'Holiday Group deleted successfully.');
    return redirect()->route('hr.holiday_groups.index');
}

routes / web.php

Route::group(['prefix' => 'hr', 'as' => 'hr.', 'namespace' => 'Hr', 'middleware' => ['auth']], function () {

Route::resource('holiday_groups', 'HrHolidayGroupsController');
});

index.php

<tbody>
  @foreach($groups as $key => $group)
    <td>
     {{$key+1}}
    </td>
    <td>
      {{$group->group_name ?? '' }}
    </td>
    <td>
      {{ $group->description ?? '' }}
    </td>
    <td>
       @can('holiday_group_show')
    <a class="btn btn-xs btn-primary" href="{{ route('hr.holiday_groups.show', $group->id) }}">
       { trans('global.view') }}
    </a>                            
        @endcan
        @can('holiday_group_edit')
    <a class="btn btn-xs btn-info" href="{{ route('hr.holiday_groups.edit', $group->id) }}">
        {{ trans('global.edit') }}
    </a>
        @endcan
        @can('holiday_group_delete')
    <a class="btn btn-xs btn-danger" data-toggle="modal" data-target="#confirm-delete{{ $group->id }}" data-original-title="Close"> 
     span style="color:white;">{{ trans('global.delete') }}</span>
    </a>
        @endcan
                                
     <div class="modal fade" id="confirm-delete{{ $group->id }}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
     <div class="modal-dialog">
       <div class="modal-content">
         <div class="modal-header">
          <h4 class="modal-title">Delete Holiday Group</h4>
          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
           <span aria-hidden="true">&times;</span>
          </button>
         </div>
        <div class="modal-body">
         <form action="{{route('hr.holiday_groups.destroy',['id'=>$group->id])}}" method="post">
         {{ csrf_field() }}
          <p>Are you sure you want to delete this Holiday Group?</p>
          <div class="modal-header">
          <h4>{{ $group->group_name }}</h4>
         </div>
         </form>
        </div>
        <div class="modal-footer justify-content-between">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="submit" class="btn btn-danger">Delete</button>
         </div>
          </div>
          <!-- /.modal-content -->
          </div>
        <!-- /.modal-dialog -->
       </div>
      <!-- /.modal -->  
     </td>
                                               
   </tr>
  @endforeach 
</tbody>

大约五个月前,我开始使用Laravel,我需要在短时间内完成此项目。我的问题是,当我在编辑/更新表单中单击“保存”按钮时,出现此错误:

  

此路由不支持PUT方法。支持的方法:GET,HEAD

最初,错误是:

  

此路由不支持POST方法。

这是编辑表单的我的代码:

edit.blade.php

<form  action="{{route('hr.holiday_groups.edit', ['id'=>$group->id])}}" method="post" class="form-horizontal" enctype="multipart/form-data">

        {{ csrf_field() }}

   <input type="hidden" name="_method" value="PUT">
                        <div class="form-body">
                            <div class="row">
                                <div class="col-md-6">
                                    <div class="form-group row">
                                        <label class="control-label text-right col-md-3">Group Name<span style="color:red;">*</span></label>
                                        <div class="col-md-9 controls">
                                            <input  type="text" name="group_name" placeholder="Enter group name here" class="form-control" value="{{old('group_name',$group->group_name)}}" required data-validation-required-message="This field is required">
                                        </div>
                                    </div>
                                </div>
                                <!--/span-->

                                <div class="col-md-6">
                                    <div class="form-group row">
                                        <label class="control-label text-right col-md-3">Description</label>
                                        <div class="col-md-9">
                                            <textarea rows="2" name="description" class="form-control" placeholder="Enter Description here" value="{{old('description',$group->description)}}">{{old('description',$group->group_name)}}</textarea>
                                        </div>
                                    </div>
                                </div>

                            </div>
                        </div>
          
            <div>
                <!--<input class="btn btn-primary" type="submit" value="{{ trans('global.save') }}">-->
                &nbsp;&nbsp;&nbsp;<button type="submit" class="btn btn-primary">{{ trans('global.save') }}</button>
                <button type="button" onclick="window.location.href='{{route('hr.holiday_groups.index')}}'" class="btn btn-default">Cancel</button>
   </div>
</form>

我在代码中添加了@method('PUT'),但错误仍然存​​在。我该如何解决这个问题?

谢谢

1 个答案:

答案 0 :(得分:1)

edit路线用于显示编辑表单。它不是用于处理它。这就是update的目的。将表格发送至:

route('hr.holiday_groups.update', ['holiday_group' => $group->id])