79 lines
1.9 KiB
PHP
79 lines
1.9 KiB
PHP
<?php
|
|
/**
|
|
* Элемент формы
|
|
*/
|
|
namespace ctiso\Form;
|
|
|
|
use ctiso\Form\OptionsFactory;
|
|
|
|
class Field
|
|
{
|
|
/** @var bool */
|
|
public $hidden = false;
|
|
/** @var string */
|
|
public $name;
|
|
/** @var string */
|
|
public $label; // Метка поля
|
|
|
|
/** @var mixed */
|
|
public $value; // Значение поля
|
|
/** @var string */
|
|
public $type = ""; // Каждому типу элемента соответствует макрос TAL
|
|
/** @var ?string */
|
|
public $error_msg = null;
|
|
/** @var ?mixed */
|
|
public $default = null;
|
|
/** @var bool */
|
|
public $error = false;
|
|
/** @var bool */
|
|
public $require = false;
|
|
/** @var ?string */
|
|
public $hint = null;
|
|
/** @var ?int */
|
|
public $maxlength = null;
|
|
/** @var ?string */
|
|
public $fieldset = null;
|
|
// Блоки (Убрать в отдельный класс!!!)
|
|
/** @var array */
|
|
public $_title = [];
|
|
/** @var string */
|
|
public $description = "";
|
|
/** @var array */
|
|
public $alias = [];
|
|
|
|
|
|
/**
|
|
* @param array $input
|
|
* @param OptionsFactory|null $factory
|
|
* @phpstan-ignore-next-line
|
|
*/
|
|
public function __construct ($input = [], $factory = null)
|
|
{
|
|
$this->default = null;
|
|
if (isset($input['validate'])) {
|
|
$this->require = strpos($input['validate'], 'require') !== false;
|
|
}
|
|
if (isset($input['fieldset'])) {
|
|
$this->fieldset = $input['fieldset'];
|
|
}
|
|
// Инициализация свойст обьетка
|
|
foreach (['label', 'name', 'type', 'description', 'maxlength'] as $name) {
|
|
if (isset($input[$name])) {
|
|
$this->$name = $input[$name];
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param mixed $value
|
|
*/
|
|
function setValue($value): void
|
|
{
|
|
$this->value = $value;
|
|
}
|
|
|
|
function getId(): string
|
|
{
|
|
return $this->name . '_label';
|
|
}
|
|
}
|