<?php namespace api\models; use common\models\EmailActivation; class BaseKeyConfirmationForm extends BaseApiForm { public $key; private $model; public function rules() { return [ // TODO: нужно провалидировать количество попыток ввода кода для определённого IP адреса и в случае чего запросить капчу ['key', 'required', 'message' => 'error.key_is_required'], ['key', 'validateKey'], ]; } public function validateKey($attribute) { if (!$this->hasErrors()) { if ($this->getActivationCodeModel() === null) { $this->addError($attribute, "error.{$attribute}_not_exists"); } } } /** * @return EmailActivation|null */ public function getActivationCodeModel() { if ($this->model === null) { $this->model = EmailActivation::findOne($this->key); } return $this->model; } }