我已经扩展了CWebApplication,如下所示,从数据库中添加params(应用程序级参数)。但截至目前,当我尝试使用
检索params时,我什么也得不到echo Yii::app()->params['adminMobileNo'];
扩展代码,
class QelasyApplication extends CWebApplication
{
const PARAM_CACHE = 'params';
public function setParams($value)
{
echo 'test 1';
exit;
$params = parent::getParams();
print_r($params);
echo 'test 2';
exit;
$value = Yii::app()->cache->get(self::PARAM_CACHE);
if ($value === false) {
$model = new SystemParam();
$value = $model->getParam();
print_r($value);
echo 'test 3';
exit;
Yii::app()->cache->add(self::PARAM_CACHE, $value, 1800);
}
foreach ($value as $k => $v)
$params->add($k, $v);
}
}
require_once($yii);
require_once($protected.'components/QelasyApplication.php');
$application = new QelasyApplication($config);
$application->run();
在控制器中,我试图以
的形式访问参数 Yii::app()->params['abc'] = 123;
echo Yii::app()->params['basePath'];
echo Yii::app()->params['abc'];
echo Yii::app()->params['adminMobileNo'];
// print_r(Yii::app()->getParams());
exit;
但没有输出它只是退出。
即使是setParams方法也没有运行,因为不显示内部的echo语句。可能是什么原因?
这是我得到的输出,
CAttributeCollection#1
(
[caseSensitive] => true
[CMap:_d] => array()
[CMap:_r] => false
[CComponent:_e] => null
[CComponent:_m] => null
)
Params.php方法
$params = Yii::app()->getParams();
$value = Yii::app()->cache->get(self::PARAM_CACHE);
if ($value === false) {
$model = new SystemParam();
$value = $model->getParam();
Yii::app()->cache->add(self::PARAM_CACHE, $value, 1800);
}
foreach ($value as $k => $v)
$params->add($k, $v);
我仍然无法使用Yii::app()->cache->get(self::PARAM_CACHE)
答案 0 :(得分:2)
在main.php中定义以下内容。 (空数组)
'params' => array(),
这是第一种方法。
答案 1 :(得分:1)
为什么不在params.php
文件夹中创建config
。从db创建param数组并返回它。然后在你的
protected/config/main.php
添加
...
'params' => require('params.php'),
...
您将能够以下列方式访问它们:
Yii::app()->params['YOUR_PARAM_KEY'];