Jump to:

23478 Posts in 18950 Topics by 2878 members

General Questions

SilverStripe Forums » General Questions » SS3 GridFieldSortableRows() module

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Page: 1
Go to End
Author Topic: 591 Views
  • merrick_sd
    Community Member
    95 Posts

    SS3 GridFieldSortableRows() module Link to this post

    does anyone know if this module can work with Model admin.

    works if i attach it to on Page class in cms fields


    // Create a default configuration for the new GridField, allowing record editing
          $config = GridFieldConfig_RelationEditor::create();
          $config->addComponent(new GridFieldSortableRows('SortOrder'));
          $config->addComponent(new GridFieldBulkEditingTools());
          //$config->addComponent(new GridFieldBulkImageUpload());
          // Create a gridfield to hold the student relationship
          $columnField = new GridField(
           'Banners', // Field name
           'Banner', // Field title
           Banner::get()->sort("SortOrder"), // List of all related students
           // Create a tab named "Students" and add our field to it
          $fields->addFieldToTab('Root.Banners', $columnField);

    but if i wanted it in model admin

    eg BannerAdmin

    class BannerAdmin extends ModelAdmin {

       public static $managed_models = array(

    static $url_segment = 'Banners'; // will be linked as /admin/products
       static $menu_title = 'Banners';


  • IOTI
    Community Member
    189 Posts

    Re: SS3 GridFieldSortableRows() module Link to this post

    Hi Merrick

    This is untested code but there's no reason it shouldn't work. You'll want to override the getEditForm() function in ModelAdmin.php. So in your BannerAdmin class:

    class BannerAdmin extends ModelAdmin {

    public static $managed_models = array(

    static $url_segment = 'Banners'; // will be linked as /admin/products
    static $menu_title = 'Banners';

    function getEditForm($id = null, $fields = null) {
          $list = $this->getList();
          $exportButton = new GridFieldExportButton('before');
          $listField = GridField::create(
             $fieldConfig = GridFieldConfig_RecordEditor::create($this->stat('page_length'))
                ->addComponents(new GridFieldPrintButton('before'))
           ->addComponent(new GridFieldSortableRows('SortOrder')) //add your extra components here

          // Validation
          if(singleton($this->modelClass)->hasMethod('getCMSValidator')) {
             $detailValidator = singleton($this->modelClass)->getCMSValidator();

          $form = new Form(
             new FieldList($listField),
             new FieldList()
          $form->addExtraClass('cms-edit-form cms-panel-padded center');
          $form->setFormAction(Controller::join_links($this->Link($this->modelClass), 'EditForm'));
          $form->setAttribute('data-pjax-fragment', 'CurrentForm');

          $this->extend('updateEditForm', $form);
          return $form;


Page: 1
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.