我是Yii2 Framework的新手,我需要了解用户状态。我需要创建一个为用户分配许多状态的应用程序,而Yii2只提供了2个。在Yii2 common\models\Users
中有两个常量:STATUS_DELETED = 0;
和STATUS_ACTIVE = 10;
。有一段代码可以将状态值的范围限制为0-10,即STATUS_DELETED
和STATUS_ACTIVE
。如果我需要在STATUS_DISABLED = 20
部分中添加rules()
等其他状态,如何修改此块?我是否需要删除STATUS_ACTIVE
并将其替换为STATUS_DISABLED
,或者我应该将STATUS_DISABLED
的值限制在0-10范围内。我该如何工作?我不明白这一部分。
class User extends ActiveRecord implements IdentityInterface
{
const STATUS_DELETED = 0;
const STATUS_ACTIVE = 10;
const STATUS_DISABLED = 20; // I want to add this
/**
* @inheritdoc
*/
public static function tableName()
{
return '{{%user}}';
}
/**
* @inheritdoc
*/
public function behaviors()
{
return [
TimestampBehavior::className(),
];
}
/**
* @inheritdoc
*/
public function rules()
{
return [
['status', 'default', 'value' => self::STATUS_ACTIVE],
['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],
];
}
}
答案 0 :(得分:1)
$range
应该包含有效值的数组,而不是“ A和B之间”含义的实际范围。所以这个:
['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],
表示status
应该是0
或 10
。例如5
将不是有效值。您可以将任意数量的值添加到range
数组中,如下所示:
[
'status', 'in',
'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED, self::STATUS_DISABLED]
],