【问题标题】:Laravel Route conditionsLaravel 路由条件
【发布时间】:2020-08-23 15:19:49
【问题描述】:

我有国家模型,还有标签和类别。并且它们的 URL 不包含前缀或 ids

Mysite.org/spain

Mysite/politics

Mysite/population

如何对这些网址一一查看?

我尝试使用中间件

Route::get(‘/{slug}’, ‘CountryController@show’)->middleware(‘CheckCountryPath’)
Route::get(‘/{slug}’, ‘CategoryController@show’)->middleware(‘CheckCategoryPath’)
Route::get(‘/{slug}’, ‘TagController@show’)->middleware(‘CheckTagPath’)

在中间件中

public function handle($request, Closure $next)
    {

        // Contru checking logick
        // if country model has this slug

        return $next($request);

        // else continue

    }

如果模型没有这个slug怎么在中间件中说继续检查其他路由,不要重定向

【问题讨论】:

    标签: laravel routes middleware


    【解决方案1】:

    您需要将您的路线放在web.php 文件的末尾。

    您需要在单个中间件中处理您的 slug,该中间件将重定向到正确的控制器:

    class ChangeControllerMiddleware {
    
        public function handle($request, Closure $next) {
    
            $route = $request->route();
    
            if($country) // Country Check Logic
                $controller = '\App\Http\Controllers\CountryController@show';
    
            // If not Country Category Logic ...
            elseif($category)
                $controller = '\App\Http\Controllers\CategoryController@show';
    
            // else 404
            else
               abort(404);
    
            $routeAction = array_merge($route->getAction(), [
                'uses'       => $controller,
                'controller' => $controller,
            ]);
    
            $route->setAction($routeAction);
            $route->controller = false;
    
            return $next($request);
        }
    }
    

    【讨论】:

    • 我必须检查 3 个模型,即使我在 Controller 中检查 slug 并且 slug 不要数学,我也必须返回未找到。但我想检查 Route::get('/{slug}', 'CountryController@show') 然后 Route::get('/{slug}', 'CategoryController@show'), Route::get('/ {slug}', 'TagController@show') 然后返回 404
    • 请不要忘记接受答案,这样它也可以帮助其他人?
    • 我有情人 laravel 版本,$route->getAction() 无法识别
    猜你喜欢
    • 1970-01-01
    • 2021-09-30
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 2020-03-22
    • 2020-07-30
    • 2015-11-17
    相关资源
    最近更新 更多