這示數的原因是因爲你試圖訪問的Yii的屬性::應用程序(),這是不宣,一個數組中定義。 。
入口腳本(的index.php)通常創建Yii的對象這樣的..
require_once($yii);
Yii::createWebApplication($config)->run();
在$配置變量是你main.config文件陣列,所以即使你加入數組索引,它在Yii :: app()的屬性中不匹配不會創建..
做一套定製CONFIGS,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或郵戳分開的一些東西,可能是因爲在單獨的環境中具有不同的值,並且希望將該文件放在.gitignore
中,或者可能因爲您想要發佈yr擴展到開源,並希望人們給自己的配置明確的方式。
因此,在這些情況下,解決方案是在年度分機或任何地方建立一個文件,包含配置值,將該文件包含在index.php
中,並在年份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
這是它, 謝謝!那麼,是否將Yii的所有自定義配置(模塊/擴展)包含在params中(在main.php中)?或者,您是否將每個擴展/模塊的配置存儲在模塊/擴展中? – ews2001 2012-07-11 18:28:05
我編輯了答案.. – 2012-07-11 20:05:16