инвентаризация:dev:forms

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
инвентаризация:dev:forms [2025/05/01 16:51]
admin
инвентаризация:dev:forms [2025/05/01 18:18] (текущий)
admin [Placeholders]
Строка 13: Строка 13:
  
  
-==== TextArea ====+==== Text ==== 
 +Сделал метод для ввода текста ->text($options=[]), который может вызывать 
 +  * textAutoresize 
 +  * dokuwikiEdit 
 +  * mardownEdit 
 + 
 +В зависимости от настройки  
 +<code php> 
 +'textFields'=>
 + 'default'=>'text', 
 + 'Aces.ips'=>'text', //IP адреса хранить иначе чем текст нет смысла 
 + 'Aces.notepad'=>'markdown', 
 + 'Acls.notepad'=>'markdown', 
 + 'Comps.ip'=>'text', 
 + 'Comps.mac'=>'text', 
 + 'Comps.raw_hw'=>'text', 
 + 'Comps.raw_sw'=>'text', 
 + 'Comps.external_links'=>'text', 
 + 'MaintenanceReqs.description'=>'markdown', 
 + 'MaintenanceReqs.links'=>'text', 
 + 'LicTypes.links'=>'text', 
 + 'Networks.notepad'=>'markdown', 
 + ], 
 +</code>
 ==== Modal Popups ==== ==== Modal Popups ====
 Была следующая проблема: если у формы явно не задан ID, то он (т.к. форма наследуется от виджета) формируется как префикс (w) + индекс (0), поэтому по умолчанию у формы ID = w0. Была следующая проблема: если у формы явно не задан ID, то он (т.к. форма наследуется от виджета) формируется как префикс (w) + индекс (0), поэтому по умолчанию у формы ID = w0.
Строка 93: Строка 116:
 ++++ ++++
 во избежание подобных коллизий мы делаем в init по умолчанию id вида className-id-form во избежание подобных коллизий мы делаем в init по умолчанию id вида className-id-form
 +Для этого во всех формах желательно указывать модель через конфиг
 +==== Placeholders ====
 +Во-первых у ArmsModel есть метод getAttributePlaceholder($attribute), который возвращает плейсхолдер для поля ввода атрибута.
 +Если атрибут отмечен как is_inheritable, то возвращает унаследованное значение (либо указанное в inheritablePlaceholder параметре атрибута (может быть и функцией))
 +Во вторых в [[#ActiveField]] все методы для вывода инпутов переопределены для подгрузки плейсхолдеров
 +В третьих в форме по умолчанию включена Ajax валидация, которая в ArmsBaseController тоже переопределена и к данным валидации добавляет значения плейсхолдеров для валидируемого набора значений модели. Зачем? Меняем родителя - меняются унаследованные значения, которые видно в плейсхолдерах
 +В четвертых, чтобы обрабатывать передаваемые плейсхолдеры к форме прикрепляется обработчик события OnAjaxComplete
 +
 +==== Валидация ====
 +По умолчанию формы включают ajax валидацию, но чтобы сгенерировать url валидации по умолчанию (который обслуживается через ArmsBaseController) нужно указывать модель в конфигурацию формы
  • инвентаризация/dev/forms.1746118307.txt.gz
  • Последнее изменение: 2025/05/01 16:51
  • admin