* @copyright Tamaranga */ class Number extends Input { /** @var int */ public $min = null; /** @var int */ public $max = null; /** @var string метка поля */ protected $label = ''; /** * Инициализация поля * @return bool */ public function init() { if (! parent::init()) { return false; } $this->setTemplateName('number'); $this->isUnionAllowed = true; return true; } /** * Генерация основного контента поля * @param array $data @ref данные * @return string HTML */ public function view(array &$data = []) { if (! isset($data['name'])) { $data['name'] = ''; } $data['attr'] = $this->attr; $data['lang'] = $this->lang; $data['label'] = static::obCallableAuto($this->label); return $this->render($data); } /** * Проверка значения поля * @param array $data ['value' => &$value, 'index' => 0], 'value' - ссылка на значение поля, 'index' - индекс поля (если поле внутри группы полей) * @return bool true - значение корректно, false - значение некорректно, пропустить (не сохраняется в БД) */ public function validate($data) { if (! is_null($this->min)) { $min = (int)$this->min; if (((int)$data['value']) < $min) { $data['value'] = $min; } } if (! is_null($this->max)) { $max = (int)$this->max; if (((int)$data['value']) > $max) { $data['value'] = $max; } } return parent::validate($data); } }