了解Yii2“;“范围”;验证规则
我是Yii2框架的新手,我需要了解用户的状态。我需要创建一个应用程序,为用户分配许多状态,而Yii2只提供了2个。在Yii2了解Yii2“;“范围”;验证规则,yii2,yii2-user,yii2-validation,Yii2,Yii2 User,Yii2 Validation,我是Yii2框架的新手,我需要了解用户的状态。我需要创建一个应用程序,为用户分配许多状态,而Yii2只提供了2个。在Yii2common\models\Users中有两个常量:STATUS\u DELETED=0和状态\u活动=10。有一个代码块将状态值的范围限制为0-10,即status\u DELETED和status\u ACTIVE。如果我需要在rules()部分中添加其他状态,如status\u DISABLED=20,如何修改此块?我是否需要删除状态\u ACTIVE并将其替换为状态
common\models\Users
中有两个常量:STATUS\u DELETED=0代码>和状态\u活动=10代码>。有一个代码块将状态值的范围限制为0-10,即status\u DELETED
和status\u ACTIVE
。如果我需要在rules()
部分中添加其他状态,如status\u DISABLED=20
,如何修改此块?我是否需要删除状态\u ACTIVE
并将其替换为状态\u DISABLED
,或者我应该将状态\u 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]],
];
}
}
应包含有效值数组,而不是“介于A和B之间”含义中的实际范围。因此:
['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],
表示状态
应为0
或10
。例如,5
将不是有效值。您可以向range
数组添加任意数量的值,如下所示:
[
'status', 'in',
'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED, self::STATUS_DISABLED]
],
应包含有效值数组,而不是“介于A和B之间”含义中的实际范围。因此:
['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],
表示状态
应为0
或10
。例如,5
将不是有效值。您可以向range
数组添加任意数量的值,如下所示:
[
'status', 'in',
'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED, self::STATUS_DISABLED]
],
您是否尝试将此新状态添加到规则:['status','in','range'=>[self::status\u ACTIVE,self::status\u DELETED,self::status\u DISABLED]
?从您的示例中,这是唯一不允许此状态的情况。@rob006我的问题是不确定是否要在规则中添加新状态,因为规则指定了一个范围,并且范围通常在两个数字之间。例如0到10,50到100等等,因此添加新状态将使其看起来像0,10到20之间的范围,这在我看来是不合适和不正确的,而不是当我问这个问题时,这不是“A和B之间”的范围。这实际上是“A或B或C或…”,因此您可以使用任意数量的值,并且属性的值应该与其中一个匹配才能通过规则。@rob006现在我明白了,非常感谢您的帮助help@rob006将其添加为答案,将在将来帮助他人您是否尝试将此新状态添加到规则:['status','in','range'=>[self::STATUS\u ACTIVE,self::STATUS\u DELETED,self::STATUS\u DISABLED]]
?从您的示例中,这是唯一不允许此状态的情况。@rob006我的问题是不确定是否在规则中添加新状态,因为规则指定了一个范围,通常范围在两个数字之间。例如0到10、50到100等,因此添加新状态将使其类似于0、10和20之间的范围h在我看来是如此的不合适和不正确,而不是当我问这个问题时,这不是“A和B之间”的意思范围。这实际上是“A或B或C或…”所以你可以使用任意数量的值,属性的值应该匹配其中一个来通过规则。@rob006现在我明白了,非常感谢你的帮助help@rob006把它作为一个答案,将来会帮助别人