Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
инвентаризация:dev:forms [2025/04/27 14:50] admin [Инвентаризация: DEV: Forms] |
инвентаризация:dev:forms [2025/05/01 18:18] (текущий) admin [Placeholders] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
{{tag> | {{tag> | ||
====== Инвентаризация: | ====== Инвентаризация: | ||
+ | |||
+ | ==== ActiveField ==== | ||
Поскольку у нас шаблон ввода в форме не стандартный, | Поскольку у нас шаблон ввода в форме не стандартный, | ||
- | {Label} с иконкой и {hint} в tooltip, {input}, {error} | + | {Label} с иконкой и {hint} |
+ | |||
+ | Переделываем (наследуем) Activefield (от \yii\bootstrap5\ActiveField) следующим образом | ||
+ | * методы label и hint не заполняют $this-> | ||
+ | * в методе render мы уже формируем $this-> | ||
+ | * на самом деле в \yii\bootstrap5\ActiveField есть метод renderLabel и делаем всю магию там | ||
+ | * $this-> | ||
+ | |||
+ | |||
+ | ==== Text ==== | ||
+ | Сделал метод для ввода текста -> | ||
+ | * textAutoresize | ||
+ | * dokuwikiEdit | ||
+ | * mardownEdit | ||
- | Переделываем | + | В зависимости от настройки |
- | По умолчанию | + | <code php> |
- | Мы в $this-> | + | ' |
- | Для этого | + | ' |
- | * сначала | + | ' |
- | | + | ' |
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ], | ||
+ | </ | ||
+ | ==== Modal Popups ==== | ||
+ | Была следующая проблема: если у формы явно не задан ID, то он (т.к. форма наследуется от виджета) формируется как префикс (w) + индекс (0), поэтому по умолчанию | ||
+ | И если на страницу, в которой уже есть форма, через Popup + Ajax подгрузить | ||
+ | ++++ пример скрипта инициализации | | ||
+ | <code javascript> | ||
+ | jQuery('# | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ], { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }); | ||
+ | </ | ||
+ | ++++ | ||
+ | во избежание подобных коллизий мы делаем в init по умолчанию id вида className-id-form | ||
+ | Для этого | ||
+ | ==== Placeholders ==== | ||
+ | Во-первых у ArmsModel есть метод getAttributePlaceholder($attribute), который | ||
+ | Если атрибут отмечен как is_inheritable, | ||
+ | Во вторых в [[# | ||
+ | В третьих в форме по умолчанию | ||
+ | В четвертых, | ||
+ | ==== Валидация ==== | ||
+ | По умолчанию формы включают ajax валидацию, |