View on GitHub

yii2-cookbook-chinese

Yii Application Development Cookbook(Third Edition)中文翻译

配置控件

Yii是一个非常易于定制的框架。而且,在所有的可定制代码中,有一种非常方便的方法来设置应用的不同部分。在Yii中,是通过配置config文件夹中的文件进行的。

准备

按照官方指南http://www.yiiframework.com/doc-2.0/guide-start-installation.html的描述,使用Composer包管理器创建一个新的应用。

如何做…

如果你之前使用过Yii,那么你可能已经配置过一个数据库连接:

return [
    
    'components' => [
        'db' => [
            'class' => 'system.db.CDbConnection',
            'dsn' => 'mysql:host=localhost;dbname=database_name',
            'username' => 'root',
            'password' => '',
            'charset' => 'utf8',
        ],
    
    ],
    
];

当你希望在应用的所有部分使用一个控件时,就需要使用配置控件的方法。在之前的配置中,你可以通过控件的名字访问它,例如Yii::$app->db。

工作原理…

当你第一次直接或者通过Active Record模型使用Yii::$app->db控件时,Yii创建了一个模型,并使用应用配置文件中的component部分中db数组初始化它的公共属性。在先前的代码中,dsn会被赋值给yii\db\Connection::dsn,username会被赋值给Connection::username,等等。

如果你想找到charset代表的意思,或者想知道db控件中其它可以配置项,你需要知道它的类。在db控件这个例子中,类是yii\db\Connection。你只需要打开这个类,并查看它的公共属性,这些你可以从配置中设置。

在先前的代码中,class属性有一点不同,因为它被用于指定控件的类名。它在yii\db\Connection中并不存在。因此,可以按如下方法复写一个类:

return [
    
    'components' => [
        'db' => [
            'class' => app\components\MyConnection',
        
        ],
    
    ],
    
];

你可以复写每一个应用控件;当一个标准控件不适合你的应用时,这种方法非常有用。

内置控件

现在,我们来看看YIi都有哪些标准控件可供配置。有两个应用类型绑定了Yii:

这两个都继承自yii\base\Application,所以控制台和web应用共用这些模板。

你可以从应用的方法coreComponents()的源代码获取这些控件的名称。

你可以通过简单的添加新配置项目,并将它们的类属性指定你自定义的类,来添加你自己的应用控件(继承yii\base\Component)。

参考