Пример создания справочника
Имя
Придумайте имя вашему справочнику, например example
.
* При использовании данной инструкции меняйте все упоминания example
, GuideExample
, Пример
на свои.
Структура файлов
+-- api
| +-- app
| | +-- Guide
| | | +-- Example
| | | | +-- ActionGet.php
| | | | +-- ActionIndex.php
| | | | +-- ActionInsert.php
| | | | +-- ActionRemove.php
| | | | +-- ActionSave.php
| | | | +-- OneRecord.php
+-- client-metronic
| +-- src
| | +-- html
| | | +-- pages
| | | | +-- guide
| | | | | +-- example
| | | | | | +-- form.html
| | | | | | +-- list.html
| | | | | | +-- tpl-item.html
| | | | +-- guide_example.html
| | +-- js
| | | +-- guide
| | | | +-- guideExample
| | | | | +-- 0-start.js
| | | | | +-- 100-init.js
| | | | | +-- 200-_collectData.js
| | | | | +-- 300-edit.js
| | | | | +-- 300-insert.js
| | | | | +-- 300-remove.js
| | | | | +-- 300-save.js
| | | | | +-- 300-showInsertForm.js
Готовый шаблон шаблон справочника
- Скачайте шаблон справочника Example.
- Распакуйте в любом каталоге.
- Поместите содержимое каталога
guideExample/client-metronic
в ваш каталог, где у васclient-metronic
. - Поместите содержимое каталога
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;
client-metronic
- Добавим в файл
/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
};
},
- Добавим в файл
/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('Выполнено', 'Запись успешно изменена', '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('Выполнено', 'Запись успешно удалена', 'success');
Если вы передаёте свой callback, тогда будет выполнен только он и не выполнится код указанный выше.