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);
}
}