Я очень рад, что октябрьская 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
), который содержит:
<?= $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).
toolbarWidget
? В документации сказано, что файл переупорядочения должен называтьсяreorder.htm
. здесь - person Félix Desjardins   schedule 10.09.2015