Страница детальной сущности

  1. Страница списка сущностей
  2. Страница детальной сущности

Для модулей, которые работают со страницами, эта страница является детальной.

Приведем пример:

Модуль мероприятия должен иметь детальную страницу мероприятия:

Детальное мероприятие Заголовок страницы
/activity/event-detail/ Адрес страницы

Дальнейшая демонстрация будет производится на примере модуля Activity

Для того, чтобы наш модуль мог создавать подобные страницы при установке, нам необходимо открыть объект Saver()

используя редактор: /extensions/Modules/Activity/Panel/Models/Saver.php

Нужно подключить:

use Prologue\Framework\Translit\Translit;
use Prologue\Uni\AppPagesAppEntitiesRelations\AppPagesAppEntitiesRelations;

В методе save() инициализировать метод pageSync() - передав в него параметры


    public static function save($params)
    {
        TDD::debug($params, 'params', 'Инициализируем параметры');

        if (!$params['id']) {
            $params['id'] = self::createTmpEntity();
        }

        self::save__updateDatabaseRecord($params);

        self::removeTmpEntity();

        self::pageSync($params);

        Platform::CRUDEpilogue();

        return $params['id'];
    }

Опишем метод:


    public static function pageSync($params)
    {

        $parentRelation = AppPagesAppEntitiesRelations::getRelation(
            [
                'entity' => self::entity,
                'app_entity_item_id' => 0,
            ]
        );


        $link = '/activity/' . Translit::url($params['fields']['name']) . '/';


        AppPagesAppEntitiesRelations::saveRelation(
            [
                'name' => $params['fields']['name'],
                'parent_id' => $parentRelation['app_page_item_id'],
                'link' => $link,
                'show_in_menu' => 1,
                'is_publish' => 1,
                'sorting_index' => $params['id'],
                'entity' => self::entity,
                'app_entity_item_id' => $params['id']
            ]
        );
    }


На данном этапе нас интересуют параметры:

name Название страницы
parent_id Id родительской страницы
link Адрес страницы
show_in_menu Отображать в меню 1/0
is_publish Опубликовать 1/0
sorting_index Порядковый номер страницы
entity Связанная сущность

При запуске модуля, будет создана страница связанная с сущностью модуля.

Удаление связи

После того, как сущность удаляется, нам необходимо удалить связь и страницу

Откройте файл в редакторе: /extensions/Modules/Activity/Panel/Models/Remover.php

Подключите:

use Prologue\Uni\AppPagesAppEntitiesRelations\AppPagesAppEntitiesRelations;

В метод remove() ( перед Platform::CRUDEpilogue() )  вставьте код:


        AppPagesAppEntitiesRelations::removeRelation(
            [
                'entity' => self::entity,
                'pageId' => 0,
                'entityId' => $params['id']
            ]
        );

Метод removeRelation() - удалит связь и страницу.

  1. Страница списка сущностей
  2. Страница детальной сущности