我正在使用Yii2
高级模板,
我想访问params.php
文件中的main-local.php
,
我这样打电话:
主要-local.php:
'mailer' => [
'class' => 'myClass',
'apikey' => \Yii::$app->params['mandrill_api_key'],
'viewPath' => '@common/mail',
],
我将此mandrill_api_key
存储在params.php
params.php:
<?php
return [
'adminEmail' => 'admin@example.com',
'supportEmail' => 'support@example.com',
'user.passwordResetTokenExpire' => 3600,
'mandrill_api_key' => 'mykey'
];
我收到了这个错误:
注意:尝试在第25行的C:\ xampp \ htdocs \ myproject \ common \ config \ main-local.php中获取非对象的属性
如何获取这些参数?
答案 0 :(得分:3)
在实例化应用程序之前读取配置文件,如request lifecycle:
中所述
- 用户向条目脚本web / index.php。
发出请求- 条目脚本加载应用程序配置并创建应用程序实例以处理请求。
- 应用程序在请求应用程序组件的帮助下解析请求的路由。
- ...
醇>
因此\Yii::$app
尚不存在因此错误。我建议将你的api_key定义移动到main-local.php
配置,这样就不会混淆它的设置位置:
'mailer' => [
'class' => 'myClass',
'apikey' => 'actual api key',
'viewPath' => '@common/mail',
],
或者,您可以使用Yii2的dependancy injection container在应用程序的条目脚本中设置apikey
:
...
$app = new yii\web\Application($config);
\Yii::$container->set('\fully\qualified\myClass', [
'apikey' => \Yii::$app->params['mandrill_api_key'],
]);
$app->run();
答案 1 :(得分:2)
params是配置的一部分,你不能在你的配置中调用它。
汉德尔的最佳方式,你可以在课堂上使用它:
MyClass的:
class myClass extends ... {
public $apikey;
public function __construct(){
$this->apikey = \Yii::$app->params['mandrill_api_key'];
}
}
答案 2 :(得分:2)
你可以做到
$params['mandrill_api_key']
你不需要使用
\Yii::$app->params['mandrill_api_key']