【问题标题】:Form rules don't work表单规则不起作用
【发布时间】:2015-11-10 11:22:32
【问题描述】:

我的控制器:

public function rules()
{
    return [
        [['text'], 'required', 'message' => 'Fill in this field'],
        ['text', 'string', 'min' => 6, 'message' => 'Too short message'],
        ['text', 'validateUser']
    ];
}
public function validateUser($attribute)
{
    if (Yii::$app->user->isGuest)
        $this->addError($attribute, 'You must be logged in');
}

我有两个问题:

1) 我看到的不是消息“消息太短”,而是“文本字段应包含至少 6 个字符。”

2) validateUser 未添加警告“您必须登录”

【问题讨论】:

  • [['text'], 'required', 'message' => 'Fill in this field'],你为什么把'text'放到[]中?

标签: php validation yii2


【解决方案1】:

广告 1。应该是['text', 'string', 'min' => 6, 'tooShort' => 'Too short message'],

广告 2。你确定这个条件是真的吗?你可以在这里使用die() 或类似的东西吗?或者这个验证规则甚至没有被激活?

【讨论】:

  • 此规则未激活
  • 文本长度大于 6 对吗?如果第一个验证规则未通过,则不会激活第二个验证规则,除非您添加 'skipOnError' => false
【解决方案2】:

对于验证用户

public function rules()
{
    return [
        [['text'], 'required', 'message' => 'Fill in this field'],
        ['text', 'string', 'min' => 6, 'message' => 'Too short message'],
        ['text', 'required', 'when' => function($model){
              return (Yii::$app->user->isGuest);
            },'message'=>'You must be logged in'],
    ];
}

【讨论】:

  • Yii::$app->user->isGuest 是布尔值,所以最好直接写成return Yii::$app->user->isGuest
  • 好的。 @PatrykRadziszewski 先生。你说的对。谢谢。学习了。
猜你喜欢
  • 2022-01-13
  • 1970-01-01
  • 2013-10-13
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多