如何通过yii2中的规则添加错误代码和验证消息?

时间:2018-12-30 17:01:07

标签: yii2 yii2-advanced-app

我们正在为yii2顶部的所有端点创建邮递员集合。在所有集合中,我们都使用bdd方案,在该方案中,我们需要测试错误消息,当然还要测试成功。我们可以与返回的错误消息进行比较,以使声明通过,但可以更改消息,最终使我们的测试失败。

因此,我不想将其与字符串消息进行比较,而是将其与错误代码进行比较。但是我不知道是否有可能引发像异常这样的错误,可以使用邮递员或招摇工具等代码接收或端点来测试异常。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。为了达到我的要求,我需要扩展Yii2验证器,以覆盖“ validateAttribute”方法。在这里,我可以用代码引发所需的异常。这也使我可以直接从规则中传递异常类型和代码。

namespace common\components\validators;

use yii\base\InvalidArgumentException;

class RequiredValidator extends \yii\validators\RequiredValidator
{
  public $code;
  public $exception;

  public function validateAttribute($model, $attribute)
  {
    parent::validateAttribute($model, $attribute); // TODO: Change the autogenerated stub
     if($this->exception){
        throw new $exception($this->formatMessage($this->message, ['attribute' => $attribute]),$this->code);
     }
  }
}

这使我能够定义如下规则。

public function rules(){
  return [
  ['param', RequiredValidator::className(), 'code' => 100102, 'exception' => 'UserCustomException']
];
}