Laravel如何将组前缀参数添加到路由功能

Posted

技术标签:

【中文标题】Laravel如何将组前缀参数添加到路由功能【英文标题】:Laravel how to add group prefix parameter to route function 【发布时间】:2016-03-31 10:10:22 【问题描述】:

例如,我定义了这样的路由:

$locale = Request::segment(1);

Route::group(array('prefix' => $locale), function()

  Route::get('/about', ['as' => 'about', 'uses' => 'aboutController@index']);

我想为多个语言环境(en、de、es、...)生成链接。当我尝试提供这样的前缀参数时

$link = route('about',['prefix' => 'de']);

我有这样的链接example.com/en/about?prefix=de 如何提供前缀参数以获得这样的链接example.com/de/about

【问题讨论】:

我不认为 laravel 路由有任何功能。签出此link 是的,有支票docs 是的,@Uchiha 可以在该组的属性前缀中使用命名参数。谢谢 @KalanjDjordjeDjordje #sixFingersMan 答案是正确的 【参考方案1】:

也许你可以玩弄这样的东西。

Route::group(['prefix' => 'locale'], function () 
    Route::get('about', ['as' => 'about', 'uses' => '....']);
);

route('about', 'en');  // http://yoursite/en/about
route('about', 'de');  // http://yoursite/de/about

【讨论】:

【参考方案2】:

你可以这样做:

Route::group(['prefix'=>'de'],function()
    Route::get('/about', [
       'as' => 'about',
       'uses' => 'aboutController@index'
    ]);

);

现在route('about') 会给出这样的链接:example.com/de/about

【讨论】:

我不需要定义路由。我需要获取带有其他前缀的路由的 url。【参考方案3】:

试试这个:

$locale = Request::segment(1);

Route::group(array('prefix' => $locale), function()

    Route::get('/about', ['as' => 'about', 'uses' => 'aboutController@index']);

并且在提供链接的同时,您可以使用 url 辅助函数代替路由:

$link = url('de/about');

如果您想要更通用,请在控制器/视图中使用它:

 $link = url($locale.'/about');

$locale 可能是en,de,etc

【讨论】:

【参考方案4】:

你可以像这样简单地实现它

Route::group(['prefix' => 'de'], function () 
    Route::get('about', ['as' => 'de.about', 'uses' => 'aboutController@index']);
);

你可以像 as 一样使用它

$link = route('de.about');

【讨论】:

de 在子路由中不是必需的 很抱歉,我对一个问题几乎没有改进。问题是如何在调用路由函数时一般更改前缀 但很容易识别@BasheerAhmed @BasheerAhmed 它不会

以上是关于Laravel如何将组前缀参数添加到路由功能的主要内容,如果未能解决你的问题,请参考以下文章

如何为laravel中的所有路由添加默认参数

如何将组添加到多个内置功能区选项卡 (vsto)?

在 Laravel 中添加前缀路由名称而不添加前缀 URI

Laravel 使用 Route::resource 生成路由需要添加前缀 /admin/

路由模型为租户前缀Route::resource()绑定多个参数

将语言环境添加到 laravel 资源路由