Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| инвентаризация:dev:forms [2025/04/27 14:50] – [Инвентаризация: DEV: Forms] admin | инвентаризация:dev:forms [2025/05/01 18:18] (текущий) – [Placeholders] admin | ||
|---|---|---|---|
| Строка 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 валидацию, | ||