nie*_*lsv 33 php config laravel laravel-5.1
在我的.env文件中,我有以下内容:
IMAP_HOSTNAME_TEST=imap.gmail.com
IMAP_USERNAME_TEST=myemail@gmail.com
IMAP_PASSWORD_TEST=mypw
Run Code Online (Sandbox Code Playgroud)
现在我想在我的控制器中使用它们.我试过这个,但没有结果:
$hostname = config('IMAP_HOSTNAME_TEST');
Run Code Online (Sandbox Code Playgroud)
$ hostname变量等于null.如何在控制器中使用这些配置变量?
Che*_*eta 54
尝试一下
<?php $hostname = env("IMAP_HOSTNAME_TEST", "somedefaultvalue"); ?>
Run Code Online (Sandbox Code Playgroud)
Mas*_*kar 45
如果您想尝试从控制器访问值,如果在Laravel 5.3+中不起作用,则返回null
<?php
$value=env('MY_VALUE','default_value');
Run Code Online (Sandbox Code Playgroud)
解决方案:您需要在config文件夹..say values.php中创建一个文件,然后编写如下代码
values.php
<?php
return [
'myvalue' => env('MY_VALUE',null),
//add other values as you want
]
Run Code Online (Sandbox Code Playgroud)
然后使用以下代码访问控制器中的值
<?php
$value=\Config::get('values.myvalue')
Run Code Online (Sandbox Code Playgroud)
其中"凭证"是文件名后跟"myvalue"键希望它有所帮助
Gra*_*ant 17
我想添加一个答案,以简化过去所说的话。只有配置文件可以访问env变量-然后将其传递。
步骤1.)将变量添加到.env文件中。
EXAMPLE_URL="http://google.com"
Run Code Online (Sandbox Code Playgroud)
第2步。)在config文件夹内创建一个新文件,可以使用任何名称,即。
config/example.php
Run Code Online (Sandbox Code Playgroud)
步骤3.)在这个新文件的内部,我添加了一个返回的数组,其中包含该env变量。
<?php
return [
'url' => env('EXAMPLE_URL')
];
Run Code Online (Sandbox Code Playgroud)
步骤4.)因为我将其命名为“ example”,所以我的配置“ namespace”现在为example。所以现在,在我的控制器中,我可以使用以下命令访问此变量:
$url = \config('example.url');
Run Code Online (Sandbox Code Playgroud)
提示 -如果use Config;在控制器的顶部添加,则不需要反斜杠(用于指定根名称空间)。就是
namespace App\Http\Controllers;
use Config; // Added this line
class ExampleController extends Controller
{
public function url() {
return config('example.url');
}
}
Run Code Online (Sandbox Code Playgroud)
---重要---php artisan config:cache创建完example.php文件后,请记住进入控制台。配置文件和变量被缓存,因此,如果您进行更改,则需要刷新该缓存-这同样适用于.env要更改/添加到的文件。
Cle*_*ode 14
当您的应用程序收到请求时,.env文件中列出的所有变量都将加载到$_ENVPHP超全局变量中 .
结帐laravel配置页面
$_ENV['yourkeyhere'];
Run Code Online (Sandbox Code Playgroud)
您可以使用这种格式(在 Laravel 5.5 上测试)。就我而言,我用它来获取数据库连接的数据并在控制器上使用:
$User = env('DB_USERNAMEchild','');
$Pass = env('DB_PASSWORDchild','');
Run Code Online (Sandbox Code Playgroud)
第二个参数可以为空,或者在 DB_USERNAMEchild 为空的情况下设置任何默认值。
您的 .env 文件可以相同:
DB_HOST=localhost
DB_DATABASE=FATHERBD
DB_USERNAME=root
DB_PASSWORD=password
DB_DATABASEchild=ZTEST
DB_USERNAMEchild=root
DB_PASSWORDchild=passwordofchild
Run Code Online (Sandbox Code Playgroud)
将配置变量放在配置文件中是一个更好的主意。
在您的情况下,我建议将您的变量放在config/mail.php 中,例如:
'imap_hostname' => env('IMAP_HOSTNAME_TEST', 'imap.gmail.com')
Run Code Online (Sandbox Code Playgroud)
并通过
config('mail.imap_hostname')
Run Code Online (Sandbox Code Playgroud)
它首先试图获得在配置变量值.ENV文件,如果它不能找到在变量值.ENV文件,它将会从文件中的变量值配置/ mail.php。
| 归档时间: |
|
| 查看次数: |
84454 次 |
| 最近记录: |