setTemplateName('datepicker'); $this->isUnionAllowed = true; return true; } /** * Генерация основного контента поля * @param array $data @ref данные * @return string HTML */ public function view(array &$data = []) { $name = $data['name'] ?? ''; $attr = $this->attr; static::attrAdd($attr, 'name', $name); static::attrAdd($attr, 'type', 'text'); static::attrAdd($attr, 'autocomplete', 'off'); $value = $this->value(); if (! empty($value)) { static::attrAdd($attr, 'value', HTML::escape(date('d-m-Y', strtotime($value)))); } $data['attr'] = $attr; $jsName = $this->form->jsObjectName('datepicker'); $data['jsName'] = $jsName; $data['noJsRender'] = 1; $html = $this->render($data); $this->form->initionsJavascript($jsName, $this->jsRender()); return $html; } /** * Проверка значения поля * @param array $data ['value' => &$value], 'value' - ссылка на значение поля * @return bool true - значение корректно, false - значение некорректно, пропустить (не сохраняется в БД) */ public function validate($data) { if (! empty($data['value'])) { $time = strtotime($data['value']); $data['value'] = ($time > 0 ? date('Y-m-d', $time) : ''); } return parent::validate($data); } /** * Установка значения поля при загрузке данных из БД * @param mixed $value * @return void */ public function setValue($value) { if ($value === '0000-00-00' || $value === '0000-00-00 00:00:00') { $value = ''; } parent::setValue($value); } }