IgnoreRoute和Laravel中页面请求的特定控制器

时间:2018-02-19 02:34:10

标签: php laravel laravel-routing

假设我的前端页面有一个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' );
    }

1 个答案:

答案 0 :(得分:1)

你所建议的不是这样做的方法。

当Laravel处理请求时,它将尝试按照注册顺序将请求URI与您的应用程序路由进行匹配。因此,您只需在login文件中的register路由之前添加pageroutes/web.php路由。

Route::get( '/login', 'UsersController@index' );
Route::get( '/register', 'RegistrationController@create' );
Route::get( '{slug}', 'PagesController@show' );