zhoupenghui 2018-05-31 16:18:21 3178次浏览 0条回复 0 0 0
我所用到的yii自带的行为有这么几种:
  1. yii\behaviors\BlameableBehavior : 使用当前用户 ID 自动填充指定的属性
  2. yii\behaviors\TimestampBehavior: 自动把时间戳填充指定的属性
  3. yii\behaviors\AttributeBehavior: 在发生特定事件时自动为 ActiveRecord 对象的一个或多个属性 指定一个指定的值
  4. yii\behaviors\SluggableBehavior: 自动填充指定的属性,其值可以在 URL 中用作 slug
还用到一些其他的扩展行为:
  1. yii2tech\ar\position\PositionBehavior: 允许通过提供重新排序方法来 管理整数字段中的记录顺序
  2. PinyinBehavior: 自动填充指定的属性, 可把指定属性中的汉字翻译成拼音
现在,针对以上几种行为,进行解说:

*BlameableBehavior:使用当前用户 ID 自动填充指定的属性,有如下几种表示:

<?php
use yii\behaviors\BlameableBehavior;

public function behaviors()
{
    return [             
              // 匿名行为, 只有行为类名,这样写了之后,所有的一切都要遵循BlameableBehavior的要求  
              BlameableBehavior::class,
        ];
}
?>
<?php
use yii\behaviors\BlameableBehavior;

public function behaviors()
{
    return [
                [  // 匿名行为, 配置数组
                'class' => BlameableBehavior::class,  // 行为类
                'attributes' => [
                    // 当insert时,自动把当前用户ID自动填充指定的属性(createdBy), 
                    // 当然, 以下键值也可以是数组,
                    // eg: ActiveRecord::EVENT_BEFORE_INSERT => ['createdBy', 'updatedBy'],
                    ActiveRecord::EVENT_BEFORE_INSERT => 'createdBy',
                    // 当update时,自动把当前用户ID自动填充指定的属性(updatedBy)
                    ActiveRecord::EVENT_BEFORE_UPDATE => 'updatedBy',
                ],
            ],
    ];
}
?>
<?php
use yii\behaviors\BlameableBehavior;

public function behaviors()
{
    return [
                [  // 匿名行为, 配置数组
                'class' => BlameableBehavior::class,  // 行为类
                 // 修改更新时 当前用户ID填充的属性: 当修改时,把当前用户ID填充给deleted_at
                 // 该属性可根据自己数据表的设计动态更改
                'updatedAtAttribute' => 'deleted_at',
                // 如果数据表中没有updatedBy字段,则可定义updatedByAttribute为false
                // 'updatedByAttribute' => false
                    
                'createdByAttribute' => 'createdBy',  // 同上
            ],
    ];
}
?>
<?php
use yii\behaviors\BlameableBehavior;

public function behaviors()
{
    return [
                [  // 匿名行为, 配置数组
                'class' => BlameableBehavior::class,  // 行为类
                // 传递的值, 默认情况下是当前用户ID, 如果定义了value,则使用当前定义的value值
                'value' => function($event) {  // 匿名函数方式
                // 自动填充值: 可在这里定义相应的数据
                    return '#' . $this->id
                },
                // value格式还可以是这样: 'value' => '#' . $this->id
            ],
    ];
}
?>

*以上可视情况综合使用 下一篇: 对yii2 内置的behavior理解(TimestampBehavior篇)

    没有找到数据。
您需要登录后才可以回复。登录 | 立即注册