Laravel,从路由文件获取ENV变量

5

我尝试从routes/web.php文件访问ENV变量,但一直失败。原因是我想为仪表板/客户区域创建特殊的路由组。以下是我的最新代码:

$dashboard = env('DASHBOARD_DOMAIN', 'localhost');

Route::group(['domain' => 'dashboard.localhost.dev','middleware' => 'auth'], function () {
    Route::get('/', 'DashboardController@index');
});

上面的代码是可行的,但我不想像那样硬编码域值,因为如果我使用这种方式,每次上传我的代码到生产服务器时都需要再次更改它们。但是如果我将$dashboard作为域值放入,它根本不起作用。

在这里告诉你,如果你升级你的应用到Laravel 5.3,那么env函数将在web.php文件中工作,该文件取代了routes.php文件。 - null
4个回答

3
如果您在.env中定义了DASHBOARD_DOMAIN,那么代码应该能够正常工作。
Route::group([
      'domain' => 'dashboard' . env('DASHBOARD_DOMAIN', 'localhost') . 'dev',
      'middleware' => 'auth'], function () {
    Route::get('/', 'DashboardController@index');
});

1
已经尝试过了,但是它就是不起作用。我确定我在.env文件中放置了正确的变量,因为我在其他文件中测试了一下,返回env('DASHBOARD_DOMAIN', 'localhost')并且它可以工作,但是从路由文件中却无法工作。 - Rendy Febry
我可以确认这在 Laravel 最新的版本 5.3 中可行。 - null
1
这也适用于 5.5 版本,但请确保在设置新值后运行artisan config:clearartisan optimize - adrien

1

在routes.php文件中无法使用env帮助函数。这是不可能的。


您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - null
嗯,我在一个L5.3应用程序中尝试并得到了null。在更新自定义的env()字符串后,我首先运行了php artisan config:cache。为了测试,我将以下内容添加到web.php中:Route::get('/helper', function () { dd(env('DOES_HELPER_WORK')); }); - zeros-and-ones

1
我曾经遇到相同的问题,但通过更改函数解决了它。
像这样更改变量。
config('dashboard.domain', 'localhost') 

清除缓存,请运行:
php artisan config:cache

您的代码将会像这样。
$dashboard = config('dashboard.domain', 'localhost');

Route::group(['domain' => 'dashboard.localhost.dev','middleware' => 'auth'], function () {
    Route::get('/', 'DashboardController@index');
});

0
你需要为你的项目创建一个 .env 文件并在其中设置环境变量。
所以在你的情况下:
'DASHBOARD_DOMAIN=localhost'
因此,在你的路由文件中,仍然需要使用 'env()' 方法,但现在该值将从你的 .env 文件中提取。
另外,你需要知道,'env()' 的第二个参数是默认值,当该变量在其他地方没有被设置时会使用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接