urmaul / yii-enumattributes

用于处理ENUM属性的Yii ActiveRecord行为。

dev-master 2014-06-18 17:08 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:52:48 UTC


README

用于处理ENUM属性的Yii ActiveRecord行为

安装

composer require urmaul/yii-enumattributes dev-master

附加示例

您需要将此行为添加到behaviors

public function behaviors()
{
    return array(
        ...
        'statusEnum' => array(
            'class' => 'EnumAttributesBehavior',
            'attribute' => 'status',
        ),
    );
}

选项

  • attribute (字符串) - enum属性名称
  • labels (数组) - 自定义标签数组 (value => label)

Class phpDoc

并且您也应该将行为属性添加到phpDoc注释中

/**
 * ...
 * 
 * @property EnumAttributesBehavior $statusEnum
 */
class ...

使用

现在,您可以通过调用行为来检索可能的值的列表

$model->statusEnum->values

值的顺序与数据库结构中的值的顺序相同。

标签

或者,您可以调用行为以检索“value => label”映射

$model->statusEnum->valueLabels

值的顺序与数据库结构中的值的顺序相同。

标签是通过使用 CModel::generateAttributeLabel 函数从值生成的。您可以使用 labels 行为选项设置自定义标签。

验证规则

此行为可以为您生成验证规则。

public function rules()
{
    return array(
        ...
        $this->statusEnum->rule,
        // or
        $this->statusEnum->rule + array('on' => 'create'),
        ...
    );
}