12

10 月の 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 行目

そのエラー メッセージが参照している 10 月の 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 ではありません)。

4

1 に答える 1

2

ReorderController は動作であるため、コントローラーの宛先として呼び出されることを意図しています (例: example.com/backend/btruchan/team/members/reorder)。関数で使用する方法でビューとして呼び出されるようにコーディングされていませんindex

ReorderController ソースでは、関数は保護された関数をreorder呼び出す唯一のメソッドであり、ページに対して定義されている唯一の場所です。その機能は、ホスト コントローラーからは利用できません。prepareVarsreorderToolbarWidgetprepareVars

したがって、 でビューを作成しようとするのではなく、目的の URLを指すパーシャル$this->makeView('reorder');にツールバー ボタンを作成します。例えば:_list_toolbar.htmreorder

<div data-control="toolbar">
    <a href="<?= Backend::url('btruchan/team/members/create') ?>" class="btn btn-primary oc-icon-plus">New Member</a>
    <a href="<?= Backend::url('btruchan/team/members/reorder') ?>" class="btn btn-primary oc-icon-sort">Reorder Members</a>
</div>

[メンバーの並べ替え] ボタンをクリックすると、並べ替え可能なレコードを含む新しいページに移動します。

パーシャルを使用して_reorder_toolbar.htm、再注文ページの上部に必要なものを追加できます。または、まったく使用しないでください。

于 2015-10-01T11:50:26.540 に答える