Пример создания раздела

Имя

Придумайте имя вашему разделу, например example

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

Структура файлов

+-- api
|   +-- app
|   |   +-- Example
|   |   |   +-- ActionGet.php
|   |   |   +-- ActionIndex.php
|   |   |   +-- ActionInsert.php
|   |   |   +-- ActionRemove.php
|   |   |   +-- ActionSave.php
|   |   |   +-- ControllerGet.php
|   |   |   +-- ControllerIndex.php
|   |   |   +-- ControllerInsert.php
|   |   |   +-- ControllerRemove.php
|   |   |   +-- ControllerSave.php
|   |   |   +-- OneRecord.php
|   |   +-- Routes
|   |   |   +-- example.yaml
+-- client-metronic
|   +-- src
|   |   +-- html
|   |   |   +-- pages
|   |   |   |   +-- example
|   |   |   |   |   +-- form.html
|   |   |   |   |   +-- list.html
|   |   |   |   |   +-- tpl-file.html
|   |   |   |   |   +-- tpl-item.html
|   |   |   |   +-- example.html
|   |   +-- js
|   |   |   +-- example
|   |   |   |   +-- 0-start.js
|   |   |   |   +-- 100-init.js
|   |   |   |   +-- 200-_collectData.js
|   |   |   |   +-- 200-_getData.js
|   |   |   |   +-- 200-_getNewRecord.js
|   |   |   |   +-- 200-_initFile.js
|   |   |   |   +-- 300-edit.js
|   |   |   |   +-- 300-insert.js
|   |   |   |   +-- 300-remove.js
|   |   |   |   +-- 300-save.js
|   |   |   |   +-- 300-showInsertForm.js

Готовый шаблон шаблон раздела

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

Таблица в БД

-- Пример раздела
CREATE TABLE IF NOT EXISTS `example` (
  `id`         INT(11)      NOT NULL AUTO_INCREMENT,
  `name`       VARCHAR(255) NULL,
  `files`      TEXT,
  `created_at` DATETIME,
  `updated_at` DATETIME,
  `deleted_at` DATETIME,
  PRIMARY KEY (`id`)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8
  COLLATE = utf8_unicode_ci;

client-metronic

  1. Добавим в файл /src/js/0-app/200-routes.js новый маршрут
'/example': function (params, query) {
  app.page = {
      name  : 'example',
      title : 'Пример',
      onLoad: function () {
          example.init();
      },
      params: params,
      query : query
  };
},
  1. Добавим в файл /src/html/include/menu_horizontal.html новый пункт меню
<li class="m-menu__item js-link js-link__example d-none js-role js-role__example--read" data-active-class="m-menu__item--active" aria-haspopup="true">
  <a href="/example" data-navigo class="m-menu__link ">
      <span class="m-menu__item-here"></span>
      <span class="m-menu__link-text">
          Example
      </span>
  </a>
</li>
  1. Добавим в файл /src/js/0-app/100-config.js права доступа для раздела
// Роли пользователей
userRoles: {
  // Список ролей с правами доступа
  list: [
      {
          name  : 'example',
          title : 'Example',
          access: [
              'read',
              'create-update',
              'delete'
          ]
      }
  ],
},

api

  1. Добавим в файл api/app/routes.yaml новый маршрут
app_route_example:
resource: 'app/Routes/example.yaml'

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

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