Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
инвентаризация:dev:forms [2025/05/01 16:51] – admin | инвентаризация:dev:forms [2025/05/01 18:18] (текущий) – [Placeholders] admin |
---|
| |
| |
==== 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. |
"validationUrl": "\/web\/aces\/validate?id=675" | "validationUrl": "\/web\/aces\/validate?id=675" |
}); | }); |
<code> | </code> |
++++ | ++++ |
во избежание подобных коллизий мы делаем в init по умолчанию id вида className-id-form | во избежание подобных коллизий мы делаем в init по умолчанию id вида className-id-form |
| Для этого во всех формах желательно указывать модель через конфиг |
| ==== Placeholders ==== |
| Во-первых у ArmsModel есть метод getAttributePlaceholder($attribute), который возвращает плейсхолдер для поля ввода атрибута. |
| Если атрибут отмечен как is_inheritable, то возвращает унаследованное значение (либо указанное в inheritablePlaceholder параметре атрибута (может быть и функцией)) |
| Во вторых в [[#ActiveField]] все методы для вывода инпутов переопределены для подгрузки плейсхолдеров |
| В третьих в форме по умолчанию включена Ajax валидация, которая в ArmsBaseController тоже переопределена и к данным валидации добавляет значения плейсхолдеров для валидируемого набора значений модели. Зачем? Меняем родителя - меняются унаследованные значения, которые видно в плейсхолдерах |
| В четвертых, чтобы обрабатывать передаваемые плейсхолдеры к форме прикрепляется обработчик события OnAjaxComplete |
| |
| ==== Валидация ==== |
| По умолчанию формы включают ajax валидацию, но чтобы сгенерировать url валидации по умолчанию (который обслуживается через ArmsBaseController) нужно указывать модель в конфигурацию формы |