对yii2 内置的behavior理解(BlameableBehavior篇) [ 新手入门 ]
我所用到的yii自带的行为有这么几种:
- yii\behaviors\BlameableBehavior : 使用当前用户 ID 自动填充指定的属性
- yii\behaviors\TimestampBehavior: 自动把时间戳填充指定的属性
- yii\behaviors\AttributeBehavior: 在发生特定事件时自动为 ActiveRecord 对象的一个或多个属性 指定一个指定的值
- yii\behaviors\SluggableBehavior: 自动填充指定的属性,其值可以在 URL 中用作 slug
还用到一些其他的扩展行为:
- yii2tech\ar\position\PositionBehavior: 允许通过提供重新排序方法来 管理整数字段中的记录顺序
- 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篇)
共 0 条回复
没有找到数据。
zhoupenghui
注册时间:2016-04-29
最后登录:2020-08-20
在线时长:44小时43分
最后登录:2020-08-20
在线时长:44小时43分
- 粉丝3
- 金钱870
- 威望120
- 积分2510