Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
了解Yii2“;“范围”;验证规则_Yii2_Yii2 User_Yii2 Validation - Fatal编程技术网

了解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并将其替换为状态

我是Yii2框架的新手,我需要了解用户的状态。我需要创建一个应用程序,为用户分配许多状态,而Yii2只提供了2个。在Yii2
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把它作为一个答案,将来会帮助别人