* @copyright Tamaranga */ class Password extends Input { /** @var string значение HTML атрибута поля (отключено по умолчанию) */ protected $autocomplete = 'new-password'; /** * Инициализация поля * @return bool */ public function init() { if (! parent::init()) { return false; } $this->setTemplateName('password'); $this->isUnionAllowed = false; return true; } /** * Генерация основного контента поля * @param array $data @ref данные * @return string HTML */ public function view(array &$data = []) { if (! isset($data['name'])) { $data['name'] = ''; } $value = $this->value(); $data['value'] = str_repeat('*', mb_strlen($value)); if (! empty($this->autocomplete)) { static::attrAdd($this->attr, 'autocomplete', $this->autocomplete); } $data['attr'] = $this->attr; $data['lang'] = $this->lang; return $this->render($data); } /** * Проверка значения поля * @param array $data ['value' => &$value], 'value' - ссылка на значение поля * @return bool true - значение корректно, false - значение некорректно, пропустить (не сохраняется в БД) */ public function validate($data) { if (parent::validate($data)) { $data['value'] = $this->security->encrypt($data['value']); return true; } return false; } /** * Установка значения поля при загрузке данных из БД * @param mixed $value */ public function setValue($value) { $value = $this->security->decrypt($value); parent::setValue($value); } }