在laravel中,当段数超过一个时,中间件不会在RouteGroup中运行

时间:2017-11-19 14:48:40

标签: php laravel-5 routes middleware

我需要将位置添加到所有网址。我使用" mapWebRoutes" in" RouteServiceProvider.php"像这样:

processData() {
  const data = this.state.data;

  if(data[0].weight > 0.25 || (data[0].weight+data[1].weight) > 0.67) {
    return data.map(point => ({ ...point, weight: point.weight / 3 }))
  } else {
    return data.slice()
  }
}

但是当段数超过一个时,中间件就不会运行。 例如,位置已正确添加到下面的地址。

从中间件返回后

chmod a+x /opt/vscode-1.18.0/resources/app/node_modules/vscode-ripgrep/bin/rg => protected function mapWebRoutes() { $locale = Request::segment(1); Route::group([ 'middleware' => 'web', 'namespace' => $this->namespace, 'prefix' => $locale ], function ($router) { require base_path('routes/web.php'); }); }

但位置未添加到以下地址:

http://example.com/test

这意味着中间件尚未运行。我将http://example.com/en/test添加到第一行中间件以确保中间件正在运行。但是当段数超过一个时,中间件就不会运行。

我的中间件代码是:

http://example.com/test1/test2

2 个答案:

答案 0 :(得分:0)

我将mapWebRoutes()更改为以下代码并解决了问题:

 protected function mapWebRoutes()
{
    if (!array_key_exists(Request::segment(1), config('translatable.locales'))) {
        Route::group([
            'middleware' => ['web'],
            'namespace' => $this->namespace
        ], function ($router) {
            require base_path('routes/web.php');
        });
    } else {
        $locale = Request::segment(1);
        Route::group([
            'middleware' => ['web'],
            'namespace' => $this->namespace,
            'prefix' => $locale
        ], function ($router) {
            require base_path('routes/web.php');
        });
    }
}

答案 1 :(得分:0)

谢谢。 我遵循了您的想法,也增加了条件。

我在mapWebRoutes方法中有此方法:

if (!Language::isValid($locale))
    $locale = '';

Route::middleware(['web', 'lang'])
    ->namespace($this->namespace)
    ->prefix($locale)
    ->group(function () {
        require base_path('routes/web/test.php');
        require base_path('routes/web/general.php');
        require base_path('routes/web/blog.php');
        require base_path('routes/web/payments.php');
    });

如果语言无效,则空值将省略前缀并调用中间件。