Пример создания справочника

Имя

Придумайте имя вашему справочнику, например example.

* При использовании данной инструкции меняйте все упоминания example, GuideExample, Пример на свои.

Готовый шаблон шаблон справочника

  1. Скачайте шаблон справочника Example.
  2. Распакуйте в любом каталоге.
  3. Поместите содержимое каталога guideExample/client-metronic в ваш каталог, где у вас client-metronic.
  4. Поместите содержимое каталога guideExample/api в ваш каталог, где у вас api.

Таблица в БД

-- Пример справочника
CREATE TABLE IF NOT EXISTS `guide_example` (
  `id`         INT(11)      NOT NULL AUTO_INCREMENT,
  `name`       VARCHAR(255) NULL,
  `created_at` DATETIME,
  `updated_at` DATETIME,
  `deleted_at` DATETIME,
  PRIMARY KEY (`id`)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8
  COLLATE = utf8_unicode_ci;

web (client-metronic)

  1. Добавим в файл /src/js/0-app/200-routes.js новый маршрут:
    '/guide/example': function (params, query) {
        app.page = {
            name  : 'guide', // Всегда guide для всех справочников
            title : 'Пример | Справочник',
            onLoad: function () {
                lemurro.guide.init('example', 'guideExample');
            },
            params: params,
            query : query
        };
    },
    
  2. Добавим в файл /src/html/pages/guide/menu.html новый пункт меню:
    <li class="m-nav__item js-guide-link js-guide-link__example" data-active-class="m-nav__item--active">
        <a class="m-nav__link" href="/guide/example" data-navigo>
            <span class="m-nav__link-text">
                Пример
            </span>
        </a>
    </li>
    

api

Добавим в файл /app/Configs/SettingsGuides.php новый маршрут в свойстве $classes:

'example' => 'Example',

Сборка проекта

Перезапускаем gulp-задачу build-dev

Методы .insert(), .save(), .remove()

Если в эти методы не передать callback, тогда после выполнения операции будет выполнен встроенный в ядро код.

  • .insert()
    var container = $('#js-guide__items');
    container.prepend(lemurro.guide._templates.item(result.data));
    
    var row = container.find('tr[data-item-id="' + result.data.id + '"]');
    lemurro.helper.initBootstrapConfirmation(row, null);
    
    $('#js-guide__empty').hide();
    $('#js-guide__list').show();
    
    lemurro.tabs.tabInsertEdit('hide');
    
  • .save()
    var newRecord = $(lemurro.guide._templates.item(result.data));
    var row       = $('#js-guide__items').find('tr[data-item-id="' + result.data.id + '"]');
    
    row.html(newRecord.html());
    
    lemurro.helper.initBootstrapConfirmation(row, null);
    
    lemurro.tabs.tabInsertEdit('hide');
    
    Swal.fire('Выполнено', 'Запись успешно изменена', 'success');
    
  • .remove()
    var container = $('#js-guide__items');
    
    container.find('tr[data-item-id="' + result.data.id + '"]').remove();
    
    if (container.find('tr').length === 0) {
        $('#js-guide__empty').show();
        $('#js-guide__list').hide();
    }
    
    Swal.fire('Выполнено', 'Запись успешно удалена', 'success');
    

Если вы передаёте свой callback, тогда будет выполнен только он и не выполнится код указанный выше.