【问题标题】:Patch route gives 404, even when the route is defined and exists补丁路由给出 404,即使路由已定义且存在
【发布时间】:2016-03-22 22:59:54
【问题描述】:

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

//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 Route 与以下表单模型一起正常工作:

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

但是,当点击 update 的提交按钮时,它有 url

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);

    }

【问题讨论】:

  • 请设置更新标识码
  • @BKF 我已经更新了这个问题。你可以在那里看到控制器方法。
  • 你设置staff.editdesignation路由了吗?
  • @BKF 那不是路由,那是视图路径。
  • 是的,我的意思是刀片

标签: laravel-5.1 laravel-routing


【解决方案1】:

我的查询出错了

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

$staffid 不是主键而是外键。我通过将查询更改为来解决它。

$designation = Designation::where('staffid', $staffid)->firstOrFail();

【讨论】:

  • 是的 findOrFail 会自动抛出 404 错误。
  • @Gokigooooks 不是一直这样,如果参数传给它主键,总是好的。
  • 是的,但是没有匹配的记录会抛出 404 错误
【解决方案2】:

使用可以用put代替patch。 Html 表单不支持放置、修补或删除选项。所以在表单中添加一个隐藏的 _method 字段。

【讨论】:

    猜你喜欢
    • 2017-06-05
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2011-12-20
    • 2019-11-21
    • 2021-11-24
    • 2014-06-22
    • 2020-10-10
    相关资源
    最近更新 更多