首页 > 解决方案 > Laravel - 如何解决错误 404 路由问题

问题描述

我有一个 Laravel-5.8 项目,如下所示:

控制器:Admin/LeavesController

use App\Models\Leave;

class LeavesController extends Controller
{
public function leave_review()
{
 try {  
       $leaves                  = Leave::get();

        return view('admin.leaves.leave_review')
                ->with(['leaves', $leaves); 
    } catch (Exception $exception) {

        Session::flash('error', 'Action failed! Please try again');
        return back();
        }                     
}

路由/web.php

Route::group(['prefix' => 'admin', 'as' => 'admin.', 'namespace' => 'Admin', 'middleware' => ['auth']], function () {
    Route::get('admin/leaves/leave_review', 'LeavesController@leave_review')->name('leaves.leave_review');
});

视图文件夹是这样的:

视图->管理->叶子->leave_review.blade.php

布局/侧边栏:

             <li class="nav-item">
               <a href="{{ route("admin.leaves.leave_review") }}" class="nav-link {{ request()->is('admin.leaves') || request()->is('admin.leaves/*') ? 'active' : '' }}">
                 <i class="far fa-circle nav-icon"></i>
                 <p>
                   <span>Leave-Review</span>
                 </p>
               </a>

我有我的 php artisan route:list

| 得到|头| admin/admin/leaves/leave_review | admin.leaves.leave_review | 应用\Http\Controllers\Admin\LeavesController@self_review | 网络,认证 |

当我渲染页面时,虽然它已加载,但在路由 admin 中重复了两次:

http://localhost:8888/hrm/admin/admin/leaves/leave_review

即管理员/管理员

当我删除管理员前缀并以这种方式使用路由时:

所以从你的路线中删除它,把它改成这个

Route::group(['prefix' => 'admin', 'as' => 'admin.', 'namespace' => 'Admin', 'middleware' => ['auth']], function () {
   Route::get('leaves/leave_review', 'LeavesController@leave_review')->name('leaves.leave_review');
});

我得到另一个错误:

找不到错误 404 页面,并且 uri 更改为:

http://localhost:8888/hrm/admin/admin/leaves/leave_review

为什么以及如何纠正这个问题?

谢谢

标签: laravel

解决方案


因为现在您的路线是admin/leaves/leave_review而不是admin/admin/leaves/leave_review

如果您经常更改您的路线链接,您可以考虑在您的视图中使用路线名称作为route('leaves.leave_review')。这样,如果名称未更改,您将始终获得与该名称关联的路线。


推荐阅读