这是错误的原因是因为您试图访问 Yii::app() 的属性,该属性未声明,在数组中定义..
入口脚本(index.php)通常像这样创建 Yii 对象。
require_once($yii);
Yii::createWebApplication($config)->run();
$config 变量是你的 main.config 文件数组,所以即使你在数组中添加一个索引,它在 Yii::app() 的属性中不匹配,它也不会创建那个..
为了设置自定义配置,Yii 为我们提供了params
.. 可以用作Yii::app()->params['paramName']
所以在你的情况下,在 config.main 的末尾,'params'索引会像..
'params'=>array(
'my_extension'=>array(
'class'=>'ext.my_extension.my_extension',
'custom_config'=>array(
'first_option'=>array(
'active'=>true,
'custom_username'=>'username',
'custom_password'=>'password',
),
),
),
//...remaining params
),
用法将是
Yii::app()->params['my_extension']['custom_config']['first_option']['custom_username'];
编辑:
在某些情况下,您需要单独配置 yr 扩展名,或者像 facebook 或 postmark 之类的东西,可能是因为在不同的环境中具有不同的值,并且想要将该文件放入.gitignore
,或者可能是因为您想释放 yr 扩展名以打开-source,并希望人们给出明确的方式来拥有自己的配置..
因此,在这些情况下,解决方案是在 yr ext 或任何地方创建一个文件,在其中创建一个包含配置值的数组,将该文件包含index.php
在 yr中config/main
,然后放入该内容。
在你的情况下:
//in index.php
require_once(dirname(__FILE__).'/protected/ext/yr_ext/ext_config.php');
//in ext/yr_ext/ext_config.php
<?php
class ExtConfiguration {
public static function fetchConfigArray() {
return array(
'class'=>'ext.my_extension.my_extension',
'custom_config'=>array(
'first_option'=>array(
'active'=>true,
'custom_username'=>'username',
'custom_password'=>'password',
),
),
);
}
}
?>
//in config/main.php
//on top before array start
$ext_config = ExtConfiguration::fetchConfigArray();
//in params
'params'=>array(
'my_extension'=>$ext_config,
),
//...remaining params