Я взволнован тем, что в октябрьской CMS недавно добавлена внутренняя функциональность для сортировки записей в представлении списка. Но у меня возникли проблемы с тем, чтобы заставить его работать. Документация здесь. Я следовал указаниям так:
В моем контроллере я реализовал ReorderController
:
<?PHP namespace BTruchan\Team\Controllers;
use Backend;
use BackendMenu;
use BackendAuth;
use Backend\Classes\Controller;
use System\Classes\SettingsManager;
class Members extends \Backend\Classes\Controller
{
public $implement = [
'Backend.Behaviors.FormController',
'Backend.Behaviors.ListController',
'Backend.Behaviors.ReorderController'
];
public $formConfig = 'config_form.yaml';
public $listConfig = 'config_list.yaml';
public $reorderConfig = 'config_reorder.yaml';
public $requiredPermissions = ['btruchan.team.manage'];
public function __construct()
{
parent::__construct();
BackendMenu::setContext('BTruchan.Team', 'team');
}
public function index()
{
$this->makeLists();
$this->makeView('reorder');
}
}
?>
Я создал файл представления reorder.htm
(reorder.htm
), который содержит:
<?= $this->reorderRender() ?>
Мой файл config_reorder.yaml
содержит:
# ===================================
# Reorder Behavior Config
# ===================================
# Reorder Title
title: Reorder Members
# Attribute name
nameFrom: name
# Model Class name
modelClass: BTruchan\Team\Models\Members
# Toolbar widget configuration
#toolbar:
# Partial for toolbar buttons
# buttons: reorder_toolbar
Вы заметите, что часть reorder_toolbar
закомментирована. Это потому, что я действительно не знаю, что должно идти на этой панели инструментов. Я не смог найти никакой документации, которая показывает содержимое файла _reorder_toolbar.htm.
Неудивительно, что с закомментированным кодом выдается ошибка:
Неопределенная переменная: reorderToolbarWidget
Некоторая дополнительная информация:
Было предложено, чтобы я прочитал на панели инструментов списка здесь.
Поэтому я добавил следующую часть панели инструментов (названную _reorder_toolbar.htm
):
<div data-control="toolbar">
<a
href="<?= Backend::url('btruchan/team/members/create') ?>"
class="btn btn-primary oc-icon-plus">
New Team Member
</a>
<button
class="btn btn-default oc-icon-trash-o"
disabled="disabled"
onclick="$(this).data('request-data', {
checked: $('.control-list').listWidget('getChecked')
})"
data-request="onDelete"
data-request-confirm="Delete Team Member: Are you sure?"
data-trigger-action="enable"
data-trigger=".control-list input[type=checkbox]"
data-trigger-condition="checked"
data-request-success="$(this).prop('disabled', false)"
data-stripe-load-indicator>
Delete
</button>
</div>
Но я все еще получаю ошибку:
Неопределенная переменная: reorderToolbarWidget/var/www/terrasearch/public/modules/backend/Behaviors/reordercontroller/partials/_container.htm строка 1
Код в CMS за октябрь, на который ссылается это сообщение об ошибке:
<?php if ($reorderToolbarWidget): ?>
<!-- Reorder Toolbar -->
<div id="<?= $this->getId('reorderToolbar') ?>" class="reorder-toolbar">
<?= $reorderToolbarWidget->render() ?>
</div>
<?php endif ?>
<!-- Reorder List -->
<?= Form::open() ?>
<div
id="reorderTreeList"
class="control-treelist"
data-control="treelist"
Я пытался отследить эту ошибку. Похоже, что в \public\modules\backend\behaviors\ReorderController.php
reorder()
не вызывается, что означает, что prepareVars()
также не вызывается. Это предотвращает выполнение следующего кода:
$this->vars['reorderToolbarWidget'] = $this->toolbarWidget;
ReorderController.php :: makeToolbarWidget() вызывается и кажется, что все в порядке. Я проверил $this-> toolbarWidget, и он, кажется, содержит совершенно хорошие данные. (Это не NULL).