路由调用错误的控制器方法

Route calls wrong controller method

在我的 Laravel 7 项目中,我有两个控制器。一个用于前端页面,一个用于后端页面。

路由定义如下:

<?php

use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get( '/', 'PageController@index' );
Route::get( '/login', 'Auth\LoginController@showLoginForm' );
Route::get( '/logout', 'Auth\LoginController@logout' );
Route::get( '/register', 'Auth\RegisterController@showRegistrationForm' );
Route::get( '/{slug}', 'PageController@show' );


Auth::routes();

Route::get( '/admin', 'HomeController@index' )->name( 'home' );

然而,当我尝试访问管理路由时,它使用的是 pageController@show 方法而不是 homeController@index ,如下所示:

我试过使用前缀为“admin”的组,然后像 admin/dashboard 这样的页面使用了正确的控制器,但管理路由本身仍然没有。

我查看了多个路由文件示例,但它们似乎对我不起作用。

我怀疑和我使用动态路由有关?但是所有其他路线都可以正常工作,所以我真的看不到这里的问题...

我该如何解决这个问题?

这是因为你在"/admin"之前定义了"/{slug}",并且之前是匹配的。 如果您颠倒顺序,应该可以。