feat: Небольшой рефакторинг. Ограничение длинны значения в поле ввода

This commit is contained in:
origami11@yandex.ru 2024-12-05 12:48:08 +03:00
parent f599a68529
commit e5e0b6735f
5 changed files with 56 additions and 40 deletions

View file

@ -29,41 +29,41 @@ class Form extends View {
public $_title = array();
public $alias = array();
public $constructor = array();
/**
* Строим форму по ее структуре. Каждому типу соответствует определенный класс.
*/
public function __construct()
{
$this->constructor = [
'input' => 'ctiso\\Form\\Input',
'input' => Input::class,
// input с проверкой на заполненность
'inputreq' => 'ctiso\\Form\\Input',
'inputreq' => Input::class,
'date' => 'ctiso\\Form\\Date',
'datereq' => 'ctiso\\Form\\Date',
'datetime' => 'ctiso\\Form\\DateTime',
'date' => Date::class,
'datereq' => Date::class,
'datetime' => DateTime::class,
'color' => 'ctiso\\Form\\Color',
'textarea' => 'ctiso\\Form\\TextArea',
'text' => 'ctiso\\Form\\TextArea',
'multiselect' => 'ctiso\\Form\\SelectMany',
'select1' => 'ctiso\\Form\\SelectOne',
'select' => 'ctiso\\Form\\SelectOne',
'questiontype'=> 'ctiso\\Form\\QuestionType',
'secret' => 'ctiso\\Form\\Secret',
'upload' => 'ctiso\\Form\\Upload',
'image' => 'ctiso\\Form\\Upload',
'checkbox' => 'ctiso\\Form\\CheckBox',
'checkmany' => 'ctiso\\Form\\SelectMany',
'hidden' => 'ctiso\\Form\\Hidden',
'radio' => 'ctiso\\Form\\SelectOne',
'filebrowser' => 'ctiso\\Form\\BrowserInput',
'documents' => 'ctiso\\Form\\BrowserInput',
'chooser' => 'ctiso\\Form\\Input',
'select_chooser' => 'ctiso\\Form\\SelectOne',
'html_text' => 'ctiso\\Form\\HtmlText'
'color' => Color::class,
'textarea' => TextArea::class,
'text' => TextArea::class,
'multiselect' => SelectMany::class,
'select1' => SelectOne::class,
'select' => SelectOne::class,
'questiontype'=> QuestionType::class,
'secret' => Secret::class,
'upload' => Upload::class,
'image' => Upload::class,
'checkbox' => CheckBox::class,
'checkmany' => SelectMany::class,
'hidden' => Hidden::class,
'radio' => SelectOne::class,
'filebrowser' => BrowserInput::class,
'documents' => BrowserInput::class,
'chooser' => Input::class,
'select_chooser' => SelectOne::class,
'html_text' => HtmlText::class
];
}
@ -77,7 +77,7 @@ class Form extends View {
{
$this->constructor [$name] = $class;
}
/**
* Добавляет одно поле ввода на форму
*/
@ -95,7 +95,7 @@ class Form extends View {
if(isset($init['hint'])) {
$el->hint = $init['hint'];
}
$this->field[$init['name']] = $el;
return $el;
}
@ -112,7 +112,7 @@ class Form extends View {
/**
* Добавление массива fieldset на форму
*/
public function addFieldSetList(array $list)
{
foreach ($list as $fieldset) {
@ -122,7 +122,7 @@ class Form extends View {
/**
* Добавляет список полей для формы
* @param array $list
* @param array $list
*/
public function addFieldList(array $list, $factory = null)
{
@ -151,7 +151,7 @@ class Form extends View {
/**
* Устанавливает значения из масива
*/
*/
function setValues(HttpRequest $request) {
foreach ($this->field as $key => $_) {
$value = $request->getRawData($this->method, $key);
@ -160,9 +160,9 @@ class Form extends View {
}
/**
* Заполняет форму данными из обьекта
* Заполняет форму данными из обьекта
* @param object $data
* @param array $schema Связь между элементами формы и свойствами обьекта
* @param array $schema Связь между элементами формы и свойствами обьекта
*/
public function fill($data, array $schema)
{
@ -177,7 +177,17 @@ class Form extends View {
$this->field[$name]->setValue($value);
}
function execute()
public function getSchema() {
return [
'field' => $this->field,
'fieldset' => $this->fieldsets,
'method' => $this->method,
'action' => $this->action,
'header' => $this->header
];
}
function execute()
{
return $this;
}