Yii系统从数据库中获取。 Yii :: app() - > getParams()没有给出结果

时间:2014-07-16 08:05:10

标签: php yii

我已经扩展了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);
    }
}
主索引.php

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)

2 个答案:

答案 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'];