补丁路线给出404,即使路线已定义并存在

时间:2016-03-22 13:00:54

标签: laravel-5.1 laravel-routing

我有这条路线可供编辑和更新

//Designation Details for Staffs
Route::get('designation/{staffid}', array(
  'as' => 'designation.edit',
  'uses'=>'StaffController@editDesignation'));
Route::patch('designation/update/{staffid}', array(
  'as' => 'designation.update',
  'uses'=>'StaffController@updateDesignation'));

edit路由可以正常使用表单模型:

{!! Form::model($designation, [
        'method' => 'PATCH',
        'route' => ['designation.update', $designation->staffid]
        ]) !!}

但是,当点击update的“提交”按钮时,它会显示网址

http://localhost/hrm/public/designation/update/2

并导致404。只是让你知道,所有其他路线工作正常。对于类似的情况,另一个更新路线:

Route::patch('staff/update/{id}', array(
  'as' => 'staff.update',
  'uses'=>'StaffController@update'));

工作正常。 TIA。

更新:控制器方法updateDesignation

public function updateDesignation($staffid, Request $request){
        /*
            ** Update for Staff's Designation Information
        */
        $designation= Designation::findOrFail($staffid);

        $input = $request->all();
        //dd($input);

        $designation->fill($input)->save();    

        return view('staff.editdesignation')->with('designation',$designation)->with('staffid',$staffid);

    }

2 个答案:

答案 0 :(得分:1)

使用可以使用put代替补丁。 Html表单不支持put,patch或delete选项。因此,在表单中添加一个隐藏的_method字段。

答案 1 :(得分:0)

我的查询出错了

$designation= Designation::findOrFail($staffid);

$staffid不是主键,而是外键。我通过将查询更改为。

来解决它
$designation = Designation::where('staffid', $staffid)->firstOrFail();