【问题标题】:Laravel. conflict with routes拉拉维尔。与路线冲突
【发布时间】:2018-09-18 04:21:36
【问题描述】:

我的路线有问题。当我调用“editPolicy”时,我不知道执行什么但不是方法editPolicy。我想我在这两条路线之间遇到了问题:

我的 web.php ##

       Route::get('admin/edit/{user_id}', 'PolicyController@listPolicy')->name('listPolicy');

       Route::put('/admin/edit/{policy_id}','PolicyController@editPolicy')->name('editPolicy');

我在 all.blade.php 视图中这样调用 listPolicy 路由:

<a href="{{ route('listPolicy', $user->id) }}">{{ $user->name }}</a>

并像这样在edit.blade.php视图中调用editPolicy路由:

   <a href="{{ route('editPolicy', $policy->id) }}" title="Remove" class="text-danger">Remove</a></td>

我的 PolicyController.php 是:

    public function listPolicy($user_id)
    { 
     $policies = Policy::where('user_id', $user_id)->get();
     return view('admin/edit',compact('policies'));
    }

     public function editPolicy($policy_id)
     {
      dd($policy_id);
     }

但我不知道当我调用 editPolicy 路由但 editPolicy 方法没有执行时发生了什么。

有什么帮助吗?

最好的问候

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    单击锚点将始终触发 GET 请求。 route('listPolicy', $user-&gt;id)route('editPolicy', $policy-&gt;id) 都会返回 admin/edit/{an_id} 所以当你点击你的锚点时,listPolicy 将被执行。如果你想调用editPolicy,你必须通过一个表单发送一个PUT请求,正如你在Route::put声明你的路由时定义的那样。

    快速注意,您的两条路线具有相同的 URL,但似乎做了非常不同的事情,您应该区分它们以避免混乱。如果它们对相同的资源和不同的方法有影响,则可以有多个具有相同 url 的路由。例如用于显示、删除或更新同一资源。 看看documentation

    【讨论】:

    • 谢谢。我尝试更改调用:&lt;a href="{{ route('editPolicy', $policy-&gt;id) }}" method="PUT" title="Remove" class="text-danger"&gt;Remove&lt;/a&gt; 不是错误但不是调用方法 editPolicy
    • PUT 方法用于更新服务器上的资源。您不能为锚定义方法,它始终是 GET。看看methods definitions。如果您希望 editPolicy 成为 GET 方法,则必须将其声明为 GET 而不是 PUT,并使用与 listPolicy 不同的 URL。
    • 解决方案可能是重命名路线? ¨´Route::get('/admin/edit_policy/{policy_id}','PolicyController@editPolicy')->name('editPolicy')´
    猜你喜欢
    • 2019-05-26
    • 1970-01-01
    • 2018-07-27
    • 2018-10-14
    • 2014-10-24
    • 2021-08-14
    • 2015-05-18
    • 2021-08-31
    • 2019-01-01
    相关资源
    最近更新 更多