从Yii2中的组件中获取配置中的值

时间:2015-04-15 17:16:31

标签: yii2

如何访问组件中组件的配置值?

配置/ main.php

return [
    ...
    'components' => [
        ...
        'mycomponent' => [
            'class' => 'common\components\MyComponent',
            'myConfigValue' => 'someValue',
        ],
        ...

如何访问组件中的someValue

我试图在类中声明变量public $someValue,但它没有自动填充。

编辑:

这是我的组件:

namespace common\components;

use Yii;
use yii\base\Component;

class myComponent extends Component
{
    public function init()
    {
        parent::init();
    }

    public $someValue;

    public function getSomeValue()
    {
        return $someValue
    }
}

2 个答案:

答案 0 :(得分:0)

根据this guide,您可以在创建自己的组件时覆盖__construct()方法。

然后,您可以按如下方式设置属性值:

public function __construct($config = [])
{
    parent::__construct($config);
}

同样在您的方法getSomeValue()中,您需要返回$this->someValue而不是$someValue

答案 1 :(得分:0)

事实上,您快要到了……这个问题使我找到了答案。

在组件中定义的键=>值(即'myConfigValue'=>'someValue') 将被映射到您的组件类的属性。 请注意,没有将属性映射到b的键将引发错误。

class () ...

public $version = null;

public function __construct($config = [])
{
    // ... initialization before configuration is applied
    $this->config = $config;
    // use reflection
    // will map $config keys to attributes
    // e.g. 'version' => 1      mapped to $this->version
    parent::__construct($config);
}