OctoberCMS Backend. Добавить кнопку в relation manager toolbar

add-button-to-relation-manager-toolbar.png

Добавляем опцию toolbarPartial в Relation Behavior Config (config_relation.yaml) выбранного контроллера. Значеним будет является partial, в котором необходимо отрисовать модифицированную панель с кнопками.

publication_authors:
    label: Авторы
    view:
        list: $/author_code/plugn_code/models/some_model/columns.yaml
        toolbarButtons: add|remove
        toolbarPartial: relation_toolbar  <-- ВОТ СЮДА
    manage:
        showSearch: true
        recordsPerPage: 10

В примере используется имя relation_toolbar, значит в контроллере необходимо создать partial с имененм _relation_toolbar.htm. В нём нужно отрисовать кнопки по-умолчанию и добавить свою.

В CMS за отрисовку штатной панели с кнопками отвечает partial \modules\backend\behaviors\relationcontroller\partials\_toolbar.htm. Его содержимое:

<div data-control="toolbar">

    <?php foreach ($relationToolbarButtons as $button): ?>

        <?php if ($button == 'update'): ?>
            <?= $this->relationMakePartial('button_update', [
                'relationManageId' => $relationViewModel->getKey()
            ]) ?>
        <?php else: ?>
            <?= $this->relationMakePartial('button_'.$button) ?>
        <?php endif ?>

    <?php endforeach ?>

</div>

Берем нужный нам код и вставляем в наш partial. Код отдельных кнопок копировать не надо, CMS сама их подтянет. \plugins\author_code\plugn_code\controllers\some_controller\_relation_toolbar.htm

<div data-control="toolbar">
    <button
        data-request="onAutoAddAuthors"
        data-stripe-load-indicator
        class="btn btn-sm btn-primary oc-icon-link">
        Привязать авторов автоматически
    </button>
    <?php foreach ($relationToolbarButtons as $button): ?>
        <?= $this->relationMakePartial('button_'.$button) ?>
    <?php endforeach ?>

</div>

У меня используется только 2 кнопки (add|remove). Если нужна update, то следует скопировать весь код из _toolbar.

Страница официальной документации Configuring the relation behavior

Другие записи из подборки «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

Во время разработки модели данных OctoberCMS при необходимости, можно использовать собственные сообщения об ошибках валидации полей формы вместо сообщения The :attribute field is required. по-умолчанию. В статье показывается как, достаточно просто, это делается.

FrontEnd контроллеры в OctoberCMS

В OctoberCMS нет концепции frontEnd контроллеров. Иными словами, идеология этой CMS не подразумевает возможность просто создать некий ProductController с несколькими action для обслуживания маршрутов Route::method('product/{id}', 'ProductController@show'). Вместо этого предлагается использовать компоненты плагинов. Именно компоненты являются формой frontEnd контроллеров.