2016-10-16 2 views
3

Я использую gridfieldextensions и GridFieldEditableColumns на GridFieldConfig_RelationEditor.Silverstripe 3.4 gridfieldextensions GridFieldEditableColumns

Как можно перемещать GridField вправо?

[! [Введите описание изображения здесь] [1]] [1]

класс StaffCatObject расширяет DataObject

private static $many_many = array(
     'Staffs' => 'Staff' 
    ); 

    private static $many_many_extraFields = array(
     'Staffs' => array(
      'SortOrder' => 'Int', 
      'Display' => 'Boolean(1)' 
     ), 
    ); 

    public function getCMSFields() { 
     $fields = parent::getCMSFields(); 

....... 

    $GridFieldConfig = GridFieldConfig_RelationEditor::create(); 
    $GridFieldConfig->removeComponentsByType('GridFieldPaginator'); 
    $GridFieldConfig->addComponent(new GridFieldPaginator(20)); 
    $GridFieldConfig->addComponent(new GridFieldEditableColumns()); 
    $GridFieldConfig->addComponent(new GridFieldDeleteAction()); 
    $items = $this->Staffs(); 
    if (class_exists('GridFieldOrderableRows') && !$items instanceof UnsavedRelationList) { 
     $GridFieldConfig->addComponent(new GridFieldOrderableRows('SortOrder')); 
    } 

    $gridfield = new GridField("Staff", $this->StaffCatTitle, $this->Staffs()->sort('SortOrder'), $GridFieldConfig); //->sort('SortOrder') 

    $gridfield->getConfig()->getComponentByType('GridFieldEditableColumns')->setDisplayFields(array(

     'Display' => array(
      'callback' => function ($record, $column, $gridfield) { 
        return new CheckboxField('Display'); 
      }, 
      'title' => 'Display' 
      ), 

     'AdImpressum' => array(
      'title' => 'Ad Impressum', 
      'field' => 'CheckboxField' 
      ) 
    )); 


    $fields->addFieldToTab('Root.Main', $gridfield); 

    return $fields; 

класс Персонал проходит DataObject

private static $belongs_many_many = array(
    'StaffCatObjects' => 'StaffCatObject' 
); 

static $summary_fields = array(
    'Thumbnail' => 'Thumbnail', 
    'StaffTitle' => 'Name', 
    'Email' => 'Email', 
    'CheckDisplay' => 'wird angezeigt in' 
); 

ответ

2

Вы, добавить свои конец GridField. Одним из решений является пустой столбец действия со следующим кодом:

$config->removeComponentsByType('GridFieldDeleteAction'); 
$config->removeComponentsByType('GridFieldEditButton'); 

Только после создания GridField, а затем readd их после добавления GridFieldEditableColumns с помощью следующего кода:

$config->addComponent(new GridFieldEditButton()); 
$config->addComponent(new GridFieldDeleteAction()); 

Подсказка: Ваша первая инициализация не нужна:

$GridFieldConfig = GridFieldConfig_RelationEditor::create(); 
$GridFieldConfig->removeComponentsByType('GridFieldPaginator'); 
$GridFieldConfig->addComponent(new GridFieldPaginator(20)); 
$GridFieldConfig->addComponent(new GridFieldEditableColumns()); 
$GridFieldConfig->addComponent(new GridFieldDeleteAction()); 

Это может быть сделано только с помощью:

$GridFieldConfig = GridFieldConfig_RelationEditor::create(20); 

Больше информации здесь: https://github.com/silverstripe/silverstripe-framework/blob/3.4.5/forms/gridfield/GridFieldConfig.php#L232

+1

Пожалуйста, примите ответ, если это помогает решить проблему, чтобы поощрения плакатов для решения вашей проблемы. – g4b0

Смежные вопросы