OctoberCMS Backend. Показывать ошибки валидации рядом с полями ввода.
Это вольный перевод статьи Backend - Display error messages before model fields от Christophe Vuagniaux.
По умолчанию в админке, когда модель сохраняется и срабатывает триггер валидации ошибок, вы получаете всплывающее сообщение об первой ошибке на форме. Такое поведение приемлимо для небольших форм. Для больших форм со множеством правил валидации это не лучшее поведение. Во-первых, хочется видеть сразу все ошибки и, во-вторых, хочется иметь контекстную привязку ошибки к полю ввода.
Демонстрация результата
Установка
Для получения подобного результата добавьте файл plugins/AUTHOR_CODE/PLUGIN_NAME/assets/js/display-fields-errors.js
со следующим содержимым свой плагин:
/**
* Listen error field message and display error message
*/
$(window).on('ajaxInvalidField', function (event, field, fieldName, fieldMessages, isFirst) {
if (isFirst) {
$('.field-has-error').remove();
}
$('<div class="field-has-error text-danger">' + fieldMessages[0] + '</div>').insertBefore($(field))
});
/**
* Remove error messages on Success
*/
$(window).on('ajaxBeforeUpdate', function (event, context, data, textStatus, jqXHR) {
// Check handler to avoid to clear message when other Ajax request occur (e.g.: recordFinder)
if (typeof context.handler !== 'undefined' && context.handler === 'onSave') {
$('.field-has-error').remove();
}
});
И подключите этот файл в конструкторе контроллера для которого нужна такая функциональность.
<?php namespace Author\Plugin\Controllers;
class Items extends Controller
{
...
public function __construct()
{
...
$this->addJs(url('plugins/AUTHOR_CODE/PLUGIN_NAME/assets/js/display-fields-errors.js'));
}
}
Не забудьте заменить AUTHOR_CODE
на свой код разработчика и PLUGIN_NAME
- на имя разрабатываемого плагина.
https://octobercms.inetis.ch/backend-display-error-messages-before-model-fields