2015-09-01 9 views
11

Ich freue mich, dass das October CMS kürzlich Backend-Funktionalität zum Sortieren von Datensätzen in der Listenansicht hinzugefügt hat. Aber ich habe Probleme, es zum Laufen zu bringen. Die Dokumentation ist here. Ich habe die Richtung wie so folgt:October CMS - Sortieren von Datensätzen - Beispiel für die teilweise für die Symbolleiste Symbole?

In meinem Controller, ich implementiert, um die 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'); 
    } 
} 

?> 

ich die Neuordnungs View-Datei erstellt haben (reorder.htm), die enthält:

<?= $this->reorderRender() ?> 

Meine config_reorder.yaml Datei enthält:

# =================================== 
# 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 

Sie, dass die reorder_toolb auffallen wird, ar partially ist auskommentiert. Das ist, weil ich wirklich nicht weiß, was in dieser Symbolleiste gehen soll. Ich konnte keine Dokumentation finden, die den Inhalt der _reorder_toolbar.htm-Datei anzeigt.

Wenig überraschend, mit dem Code auf Kommentar, wirft er einen Fehler:

Undefined variable: reorderToolbarWidget

=== === aktualisiert

Ich habe einige zusätzliche Informationen. Es wurde vorgeschlagen, dass ich hier auf Liste Symbolleiste nachlesen: https://octobercms.com/docs/backend/lists#adding-toolbar

So habe ich die folgenden Symbolleiste Teil (benannt _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> 

Aber ich bin immer noch einen Fehler bekommen:

Undefined variable: reorderToolbarWidget /var/www/terrasearch/public/modules/backend/Behaviors/reordercontroller/partials/_container.htm line 1

Der Code, der im Oktober CMS, das die Fehlermeldung bezieht, ist:

<?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" 

Ich habe versucht, diesen Fehler zu verfolgen. Es sieht so aus, als ob in \ public \ modules \ backend \ behaviours \ ReorderController.php die Funktion reorder() nicht aufgerufen wird, was bedeutet, dass die Funktion prepareVars() ebenfalls nicht aufgerufen wird. Dies verhindert, dass Sie den folgenden Code aus ausgeführt werden:

$this->vars['reorderToolbarWidget'] = $this->toolbarWidget; 

ReorderController.php :: makeToolbarWidget() aufgerufen wird, und scheint in Ordnung zu sein. Ich habe $ this-> toolbarWidget überprüft, und es scheint sehr gute Daten zu enthalten. (Es ist nicht NULL).

Jede Hilfe würde sehr geschätzt werden.

+0

Ich bin mir nicht sicher, was Sie tun möchten. Wofür wird das ToolbarWidget verwendet? In den Dokumenten heißt es, dass die Datei der Neuordnung "reorder.htm" heißen muss. [hier] (https://octocommcms.com/docs/backend/reorder#reorder-display) –

Antwort

2

Der ReorderController ist ein Verhalten, so dass es als Controller-Ziel aufgerufen werden soll (z. B. example.com/backend/btruchan/team/members/reorder). Es ist nicht so codiert, dass es in der Funktion index als Ansicht aufgerufen wird.

Im ReorderController Quelle, die reorder Funktion ist die einzige Methode, die die prepareVars geschützte Funktion, die der einzige Ort ist, Anrufe, die die reorderToolbarWidget für die Seite festgelegt ist. Diese prepareVars Funktion ist nicht vom Host-Controller verfügbar.

Also, anstatt versuchen, eine Ansicht mit $this->makeView('reorder'); zu erstellen, erstellen Sie eine Symbolleiste auf die Schaltfläche in der _list_toolbar.htm Teil, dass Punkte auf die reorder Ziel-URL. Zum Beispiel:

<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> 

Wenn Sie klicken Sie auf „Neu ordnen Mitglieder“ klicken, werden Sie mit den Aufzeichnungen auf eine neue Seite geleitet werden, die neu geordnet werden können.

Sie können die _reorder_toolbar.htm teilweise verwenden, um alles, was Sie wollen, oben auf der Nachbestellseite hinzuzufügen. Oder benutze es überhaupt nicht.

+0

Das Builder-Plugin hat alle notwendigen Dateien korrekt generiert, aber die Schaltfläche zum Hinzufügen der Reihenfolge nicht zum Menü hinzugefügt. Das hat mir geholfen, danke. – swt83

Verwandte Themen