【问题标题】:Understanding Yii2 "range" validation rule了解 Yii2“范围”验证规则
【发布时间】:2018-06-25 03:59:10
【问题描述】:

我是 Yii2 框架的新手,我需要了解用户的状态。我需要创建一个为用户分配许多状态的应用程序,而 Yii2 只提供了 2 个状态。在 Yii2 common\models\Users 中有两个常量:STATUS_DELETED = 0;STATUS_ACTIVE = 10;。有一段代码将status的取值范围限制为0-10,即STATUS_DELETEDSTATUS_ACTIVE。如果我需要在rules() 部分添加其他状态,如STATUS_DISABLED = 20,我该如何修改这个块?我是否需要删除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]],
        ];
    }

}

【问题讨论】:

  • 您是否尝试将此新状态添加到规则:['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED, self::STATUS_DISABLED]]?从您的示例来看,这是唯一可能禁止此状态的内容。
  • @ rob006 我的问题是我不确定是否要在规则中添加新状态,因为规则指定了一个范围,通常范围在两个数字之间。例如 0 t0 10、50 到 100 等,因此添加新状态将使其范围在 0、10 和 20 之间,这对我来说看起来很不合适和不正确,而不是在我问这个问题时
  • 这不是“A 和 B 之间”含义的范围。这实际上用作“A 或 B 或 C 或 ...”,因此您可以使用任意数量的值,并且属性的值应与其中一个匹配以通过规则。
  • @rob006 现在我明白了,非常感谢您的帮助
  • @rob006 添加它作为答案,将来会帮助其他人

标签: yii2 yii2-user yii2-validation


【解决方案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]
],

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 2018-04-18
    相关资源
    最近更新 更多