phplibrary/src/Form/Field.php
2025-11-01 23:17:40 +03:00

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