Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions /

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

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

SS3 GridFieldSortableRows() module

Go to End

2 Posts   1577 Views


Community Member, 99 Posts

12 January 2013 at 1:23am

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


Community Member, 189 Posts

12 January 2013 at 2:29am

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;