OctoberCMS Backend. Показывать ошибки валидации рядом с полями ввода.

Это вольный перевод статьи Backend - Display error messages before model fields от Christophe Vuagniaux.

По умолчанию в админке, когда модель сохраняется и срабатывает триггер валидации ошибок, вы получаете всплывающее сообщение об первой ошибке на форме. Такое поведение приемлимо для небольших форм. Для больших форм со множеством правил валидации это не лучшее поведение. Во-первых, хочется видеть сразу все ошибки и, во-вторых, хочется иметь контекстную привязку ошибки к полю ввода.

Демонстрация результата

backend-form-validation.gif

Установка

Для получения подобного результата добавьте файл 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

Другие записи из подборки «OctoberCMS. Backend.»

OctoberCMS. Ошибка RelationController: "Не удалось найти шаблон (partial) ... traits\ViewMaker.php"

В контроллере поведения RelationController при нажатии на кнопке "Cоздание" вылетает ошибка с подобным содержаним

"Не удалось найти шаблон (partial) с именем _comments.htm." on line 91
of ...\modules\system\traits\ViewMaker.php

Похожие записи