laravel - 默认 Controller 键

标签 laravel laravel-5 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');
 });

我希望路由 'prefix' => 'api/v1.0/{lang}' 上的 lang 键成为所有方法和中的全局第一个变量所有 Controller 均无需手动添加到所有方法中,例如:
请参阅$lang

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

我怎样才能做到这一点?

最佳答案

一个选项是更新配置变量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');
});

然后在您可以使用的 Controller (或任何地方)中

echo app('lang');

关于laravel - 默认 Controller 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39932101/

相关文章:

php - Laravel 作业标记为失败,异常说明尝试次数过多但作业成功?

php - Raspberry Pi 是否足够强大来运行 Laravel 应用程序?

php - 如何解决Laravel路由冲突

Laravel 5.3 和 5.4 自定义路由文件

php - 具有固定参数值的路由的别名

laravel - 按 slug 而不是按 id 搜索对象

php - 验证器 - 返回所有错误消息

php - 你可以在数据库 Laravel 4 中插入声明的变量吗

php - 部署生产 Laravel 5.2 应用程序的正确步骤是什么?

php - 在 Laravel 中为 mysql 数据库制作模型和 Controller ?