【问题标题】:IgnoreRoute and specific controllers for page requests in LaravelLaravel 中页面请求的 IgnoreRoute 和特定控制器
【发布时间】:2018-07-29 06:08:27
【问题描述】:

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

【问题讨论】:

    标签: php laravel laravel-routing


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-26
      • 2012-09-07
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 2021-05-16
      相关资源
      最近更新 更多