路由调用错误的控制器方法
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}",并且之前是匹配的。
如果您颠倒顺序,应该可以。
在我的 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}",并且之前是匹配的。 如果您颠倒顺序,应该可以。