Laravel 中页面请求的 IgnoreRoute 和特定控制器
IgnoreRoute and specific controllers for page requests in Laravel
假设我的前端页面有一个 PagesController,当有人请求 slug 时,一般路径是:
Route::get( '{slug}', 'PagesController@show' );
但我的前端也有两个特定的路由,它们由不同的控制器处理:
Route::get( '/login', 'UsersController@index' );
和
Route::get( '/register', 'RegistrationController@create' );
因此,我想在请求静态页面时为它们创建异常。我做了一些研究,有人建议有类似问题的人继续创建两个不同的中间件,因为他有页面和用户,但这不是我的情况,我这里的规则只有两个例外,我希望处理这两个特殊情况不同的。现在我有 show 方法来处理带有 if/else 语句的特殊情况(因为由于某种原因,特定的路由没有被调用,即使我将 {slug} 路由切换到底部),但我想要最好的解决方案。我的代码看起来像这样(正确实现后它将使用 $request 变量)...
public function show( Request $request ){
$uri = $request->path();
if( $uri == 'login' ){
return view( 'auth.login' );
}
elseif( $uri == 'register' ){
return view( 'registration.register' );
}
return view( 'Pages::show' );
}
您的建议不是执行此操作的方法。
当 Laravel 处理请求时,它会尝试将请求 URI 与您的应用程序路由按照注册顺序进行匹配。因此,您只需要在 routes/web.php
文件中的 page
路由之前包含 login
和 register
路由。
Route::get( '/login', 'UsersController@index' );
Route::get( '/register', 'RegistrationController@create' );
Route::get( '{slug}', 'PagesController@show' );
假设我的前端页面有一个 PagesController,当有人请求 slug 时,一般路径是:
Route::get( '{slug}', 'PagesController@show' );
但我的前端也有两个特定的路由,它们由不同的控制器处理:
Route::get( '/login', 'UsersController@index' );
和
Route::get( '/register', 'RegistrationController@create' );
因此,我想在请求静态页面时为它们创建异常。我做了一些研究,有人建议有类似问题的人继续创建两个不同的中间件,因为他有页面和用户,但这不是我的情况,我这里的规则只有两个例外,我希望处理这两个特殊情况不同的。现在我有 show 方法来处理带有 if/else 语句的特殊情况(因为由于某种原因,特定的路由没有被调用,即使我将 {slug} 路由切换到底部),但我想要最好的解决方案。我的代码看起来像这样(正确实现后它将使用 $request 变量)...
public function show( Request $request ){
$uri = $request->path();
if( $uri == 'login' ){
return view( 'auth.login' );
}
elseif( $uri == 'register' ){
return view( 'registration.register' );
}
return view( 'Pages::show' );
}
您的建议不是执行此操作的方法。
当 Laravel 处理请求时,它会尝试将请求 URI 与您的应用程序路由按照注册顺序进行匹配。因此,您只需要在 routes/web.php
文件中的 page
路由之前包含 login
和 register
路由。
Route::get( '/login', 'UsersController@index' );
Route::get( '/register', 'RegistrationController@create' );
Route::get( '{slug}', 'PagesController@show' );