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 plugin и Composer

https://github.com/octobercms/october/issues/1714

Пример можно посмотреть в гугл аналитеке от раинлаб

https://octobercms.com/forum/post/add-composer-packages-to-plugin-created-with-builder

Run the composer commands inside the plugin directory.

The load order will see the "core" composer is loaded first, then the plugins composers are loaded second. This means, a plugin cannot override a core composer package, it can only introduce new ones. This logic is handled by the ComposerManager class.

As a side note: When a plugin is published to the October website, the server will build the composer f...

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

Как в OctoberCMS сделать простейшую переадресацию с одной страницы на другую?

Создаём страницу (Page), задаем URL и в секции код добавляем обработчик на хук жизненного цикла страницы. В данном случае это onStart, которая выполняется перед началом загрузки страницы.

function onStart()
{
    return Redirect::to('http://tyapk.ru');
}