如何设置url参数的默认值?

时间:2018-02-10 16:30:06

标签: laravel routes laravel-5.5

https://laravel.com/docs/5.5/urls#default-values

在文档中说,

you may use the URL::defaults method to define a default value for this 
parameter that will always be applied during the current request.

我不明白当前的要求是什么

我认为它应该用作

route('route-name'); 

并且应该使用默认值

替换参数生成url

该文档还说它必须在中间件

中完成

但是中间件会对请求进行操作,但是当我使用路由助手时,我不会发出任何请求

请帮助示例会非常有帮助 可能是我想念了解请帮助

3 个答案:

答案 0 :(得分:0)

假设你有默认的param,它与应用程序的每个请求一起使用,在这种情况下,你必须使用中间件。

就像文档https://laravel.com/docs/5.5/urls#default-values

中提到的那样

如果您只想将默认值传递给路线,则可以执行此操作。

Route::get('user/{name?}', function ($name = defaultValue) {
   return $name;
});

希望这会有所帮助

答案 1 :(得分:0)

您需要将逻辑放入服务提供程序中,以使其工作而不是使用中间件:

SessionListener

然后,您可以在不传递必需参数的情况下使用public function register() { \URL::defaults(['some_param' => 'some_value']); }

答案 2 :(得分:0)

我尝试将中间件应用于以下路由,这些路由要求使用默认值 locale ,但无法正常工作。

Route::get('/{locale}/posts', function () {
    //
})->name('post.index')->middleware('locale');
// And Inside your Kernel.php 
 protected $routeMiddleware [
'locale' => \App\Http\Middleware\SetDefaultLocaleForUrls::class, ]

但是,如果您将此中间件应用到使用route('post.index')方法生成此路由的URL的Routes或Controllers上,则它实际上可以工作。然后它将填充您在中间件中设置的语言环境的默认值。