2015-09-01 17 views
11

Ekim CMS'in son zamanlarda liste görünümündeki kayıtları sıralamak için arka uç işlevselliği eklediğinden heyecan duyuyorum. Ama işe yaramakta zorluk çekiyorum. Belge, here. Ben yönü şöyle takip ettim: Ben sipariş görünümü dosyası (reorder.htm) oluşturdukEkim CMS - kayıtları sıralama - araç çubuğu simgeleri için kısmi örnek?

<?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'); 
    } 
} 

?> 

içerir:

<?= $this->reorderRender() ?> 
benim denetleyicisi olarak

, ben ReorderController uygulanan

Benim config_reorder.yaml dosyası içerir:

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

Sen reorder_toolb fark edeceksiniz ar kısmi yorumlandı. Çünkü o araç çubuğuna ne gitmesi gerektiğini gerçekten bilmiyorum. _reorder_toolbar.htm dosyasının içeriğini gösteren herhangi bir belge bulamadım.

Undefined variable: reorderToolbarWidget

=== güncellenen ===

bazı ek bilgiler: Kod dışarı yorumladı ile

Şaşırtıcı değil, bu hata verir.

https://octobercms.com/docs/backend/lists#adding-toolbar yüzden aşağıdaki araç çubuğunu kısmi (adlandırılmış _reorder_toolbar.htm) eklendi: Ben burada liste araç çubukları üzerinde okumak olduğu öne sürüldü

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

Ama yine bir hata alıyorum:

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

o hata mesajı bahsediyor Ekim CMS, kod şöyledir:

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

Bu hatayı izlemeye çalıştım. \ Public \ modules \ backend \ behaviors \ ReorderController.php dosyasında, reorder() işlevinin çağrılmadığı anlaşılıyor; bu, prepareVars() işlevinin de çağrılmadığı anlamına geliyor. Bu çalıştırılmak üzere aşağıdaki kodu engeller:

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

ReorderController.php :: makeToolbarWidget() denilen ve normal bir durumdur ediliyor. Bu $> toolbarWidget'i kontrol ettim ve mükemmel veri içerdiği görülüyor. (NULL değil).

Herhangi bir yardım çok takdir edilecektir.

+0

Ne yapmak istediğinizden emin değilim. 'ToolbarWidget' ne için kullanılır? Dokümanlarda, yeniden sıralama dosyasının "reorder.htm" olarak adlandırılması gerektiği söylenir. [burada] (https://octobercms.com/docs/backend/reorder#reorder-display) –

cevap

2

ReorderController bir davranıştır, bu nedenle denetleyici hedefi olarak çağrılması gerekir (ör. example.com/backend/btruchan/team/members/reorder). index işlevinizde sahip olduğunuz şekilde bir görünüm olarak adlandırılmak üzere kodlanmaz. ReorderController kaynağında

, reorder fonksiyon reorderToolbarWidget sayfa için tanımlanan tek yerdir prepareVars korumalı işlevini çağırır tek yöntemdir. Bu prepareVars işlevinin ana bilgisayar denetleyicisinden kullanılamıyor.Bu nedenle, $this->makeView('reorder'); ile bir görünüm oluşturmaya çalışmak yerine, reorder hedef URL'ye işaret eden _list_toolbar.htm kısmi bir araç çubuğu düğmesi oluşturun. Örneğin:
<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> 

siz "Tekrar sipariş Üyeleri" butonuna tıklayın

, sen yeniden sıralanmış olabilir kayıtları ile yeni bir sayfaya yönlendirilirsiniz.

Yeniden düzenlemek sayfasının en üstünde istediğiniz herhangi bir şeyi eklemek için _reorder_toolbar.htm kısmi kullanabilirsiniz. Ya da hiç kullanmayın.

+0

Oluşturucu eklentisi tüm gerekli dosyaları düzgün bir şekilde oluşturdu, ancak yeniden sıralama düğmesini menüye eklemedi. Bu bana yardım etti, teşekkürler. – swt83