默认控制器键

时间:2016-10-08 12:02:52

标签: laravel laravel-5.2 laravel-routing

我有一条如下所示的laravel路线:

 Route::group(['namespace' => 'Aggregate\Customer\Controller\v1_0','middleware' => 'jwt.auth', 'prefix' => 'api/v1.0/{lang}'], function () {
    Route::put('customer/{id}', 'CustomerController@update_customer');
 });

我希望路由lang上的'prefix' => 'api/v1.0/{lang}'密钥在所有方法和所有控制器中是全局的第一个变量,而不是在所有方法中添加手动,例如:
请参阅 $ lang

public function add_address_book($lang,$user_id,AddressBookRequest $request)
{

我该怎么做?

1 个答案:

答案 0 :(得分:1)

一个选项是更新config var app.locale

Route::group([
  'namespace' => 'Aggregate\Customer\Controller\v1_0',
  'middleware' => 'jwt.auth',
  'prefix' => 'api/v1.0/{lang}'
], function () {
  App::setLocale(app('request')->segment(3));

  Route::put('customer/{id}', 'CustomerController@update_customer');
});

然后使用

echo App::getLocale();

您可以在app / config.php

中设置默认语言环境和后备语言环境

另一种选择是在应用容器

中设置单例
Route::group([
  'namespace' => 'Aggregate\Customer\Controller\v1_0',
  'middleware' => 'jwt.auth',
  'prefix' => 'api/v1.0/{lang}'
], function () {
  app()->singleton('lang', function () {
    return app('request')->segment(3);
  });

  Route::put('customer/{id}', 'CustomerController@update_customer');
});

然后在你的控制器(或任何地方)你可以使用

echo app('lang');