rangelreale/yii2-mdhaliasbehavior

使用 PHP MDH 进行模型属性别名化和格式转换的 Yii 行为

安装: 5

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 0

开放问题: 0

类型:yii2-extension

dev-master 2018-04-19 17:05 UTC

This package is not auto-updated.

Last update: 2024-09-23 14:18:31 UTC


README

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一

php composer.phar require --prefer-dist RangelReale/yii2-mdhaliasbehavior "*"

或者

"RangelReale/yii2-mdhaliasbehavior": "*"

将其添加到 composer.json 文件的 require 部分。

想法

此行为添加了一个可以执行两种数据格式之间格式转换的属性别名。

默认的别名字段名为 _alias。

如何使用

在你的模型中

/**
 * @property string posted_at This is your property that you have in the database table, it has DATETIME format
 */
class Post extends ActiveRecord
{
    // ... Some code here

    public function behaviors()
    {
        return [
            'alias' => [
                'class' => AliasBehavior::className(), // Our behavior
                'attributes' => [
                    'start_date' => [
                        'dataType' => 'datetime',
                    ],
                ],
            ]
        ];
    }
}

工作原理

行为为你在 'attributes' 部分中定义的每个属性创建一个名为 attribute_name_alias 的“虚拟”属性。当你读取 $yourModel->attribute_name_alias 时,行为将返回类型为 AliasAttribute 的对象。如果此对象在字符串上下文中使用,它将通过 __toString 魔法方法转换为字符串。在此过程中,attribute_name 的原始值将转换为本地表示。

当你将值分配给 $yourModel->attribute_name_alias 时,它将内部分配给 AliasAttribute 类的 value 属性,并将其转换为数据库存储的属性。

你也可以为每个属性定义单独的配置,并定义它的本地名称、格式等。

致谢

基于 omnilight/yii2-datetime 开发。