對yii2 內置的behavior理解(BlameableBehavior篇)

我所用到的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篇)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章