Я решил эту проблему.Чтобы выполнить мое требование, мне нужно расширить валидаторы 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']
];
}