【问题标题】:Silverstripe ModelAdmin drag and drop SortableSilverstripe ModelAdmin 拖放 可排序
【发布时间】:2023-03-11 18:03:01
【问题描述】:

我想让我的 ModelAdmin GridField 可以通过拖放进行排序。我尝试添加此代码:

$gridFieldName = 'Destributors';
    $gridField = $form->Fields()->fieldByName($gridFieldName);

    if ($gridField) {
        $gridField->getConfig()->addComponent(new GridFieldFilterHeader(),new GridFieldSortableRows('SortOrder'));
    }

但它似乎不起作用。关于如何实现它的任何想法?

任何帮助将不胜感激

【问题讨论】:

    标签: php silverstripe silverstripe-4


    【解决方案1】:

    这是我在 SS3 项目中使用的代码。您应该能够轻松地将其更新到 SS4。

    <?php
    class MealsModelAdmin extends ModelAdmin {
    
        private static $managed_models = array(
            'MealAttribute',
            'MenuCategory'
        );
    
        private static $url_segment = 'configuration';
        private static $menu_title = 'Configuration';
    
        public function getEditForm($id = null, $fields = null){
            $form = parent::getEditForm($id, $fields);
            $model = singleton($this->modelClass);
    
            /** add sorting if we have a field for... */
            if (class_exists('GridFieldOrderableRows')
                && $model->hasField('SortOrder')
                && $gridField=$form->Fields()->dataFieldByName($this->sanitiseClassName($this->modelClass))) {
                if($gridField instanceof GridField) {
                    $gridField->getConfig()->addComponent(new GridFieldOrderableRows('SortOrder'));
                }
            }
    
            return $form;
        }
    
    }
    

    【讨论】:

    • 工作就像一个魅力,我只需要在 class_exists 条件中使用全名空间:if (class_exists('Symbiote\GridFieldExtensions\GridFieldOrderableRows') &amp;&amp; ...,因为GridFieldOrderableRows 可作为 SS4 的作曲家包使用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2013-03-19
    相关资源
    最近更新 更多