【问题标题】:Weird behavoiur with route in LaravelLaravel 中路线的奇怪行为
【发布时间】:2020-11-26 01:42:44
【问题描述】:

我正在修改代码以显示不同的数据,无论用户是否是超级管理员,我发现了一种我以前从未见过的奇怪行为:

路由文件有这些路由:

Route::resource('alert_levels','AlertLevelController');
Route::get('alert_levels/{id}','AlertLevelController@index');

控制器看起来像这样:

public function index(Request $request){
  $user = Auth::user();
  $company_id = $user->isSuperAdmin() ? $request->company_id : $user->company_id;
  ...
}

代码运行良好(只有超级管理员会看到一个包含“company_id”输入的表单,因此他/她将发送请求参数),但我尝试访问“管理员 URL”(alert_levels /number) 与其他用户角色一起处理代码(重定向或其他),我已经看到代码看起来像是在忽略它。它重定向到一个空白页,无论我做什么,结果总是一个空白页。我什至在索引控制器方法的顶部写了一个 dd('hello') 但结果是一样的。

请问,您知道我做错了什么或者为什么这是预期的行为吗?

提前致谢。

【问题讨论】:

    标签: laravel routes


    【解决方案1】:

    您必须交换路由,否则resource 将评估响应(因为它将定义相同的 url 结构/方法)而不是您定义的响应:

    Route::get('alert_levels/{id}','AlertLevelController@index');
    Route::resource('alert_levels','AlertLevelController');
    

    【讨论】:

    • 是的,我同意(愚蠢的错误,感谢您让我意识到这一点)但是,我仍然想知道为什么即使在第一行调用 dd(),它也会忽略它。看起来好像它没有找到路线(但我认为它确实是因为没有显示错误)。
    • @cooper 你在哪里有 dd?
    • @cooper 这是有效答案 - 请将其标记为已回答。
    猜你喜欢
    • 2014-10-23
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 2018-05-27
    • 1970-01-01
    • 2018-03-06
    相关资源
    最近更新 更多