Laravel 5.4:如何为route()函数设置第一个和默认参数

时间:2017-06-18 23:21:08

标签: laravel laravel-5.4

我将前缀参数传递给我的网站上的所有路线:

Route::prefix("{param}")->group(function () {
    # code...
});

有时我需要在视图中调用route()函数。问题出在那里,因为我需要将$param作为第一个参数传递,如:

资源\视图\ welcome.blade.php

<a href="{{ route('about-us', $param) }}">About Us</a>

问题是:我不需要在$param函数中传递route()因为它没有必要。如何避免这种情况并执行以下操作:

<a href="{{ route('about-us') }}">About Us</a>

有没有办法创建一个中间件并设置一个&#34; global&#34;配置到route()功能?

3 个答案:

答案 0 :(得分:1)

通过使用@William Correa方法,我创建了一个辅助函数来为默认的Laravel函数助手route()设置前缀参数。

应用\助手\的functions.php

function routex($route, $params = [])
{
    if (!is_array($params)) {
        $params = [$params];
    }

    // Set the first parameter to App::getLocale()
    array_unshift($params, App::getLocale());
    return route($route, $params);
}

现在,当我尝试按名称获取route()的链接时,只需使用routex('about-us')routex()函数会输入前缀参数,例如App::getLocale()或其他任何内容想。

答案 1 :(得分:0)

在您的控制器中,您可以像这样保护您的路线:

 public function __construct()
    {
        $this->middleware('auth');
    }

而不是

Route::get('/about', 'yourcontroller@yourmethod')->name('name');

或在您的web.php中,您可以声明一个没有像这样的前缀的组

Route::namespace('name')->group(function () {
    Route::get('/about', 'yourcontroller@yourmethod')->name('name');
});

答案 2 :(得分:0)

是的,就像这样:

Route::get('about-us', 'AboutController@getAboutUs')->name('about-us');

现在,如果您致电route('about-us'),它会生成网址〜/ about-us。