sortablegridfield/docs/HasManyExample.md
Guy Sartorelli e374c93ae3 NEW Extend new AbstractGridFieldComponent class
This makes the `GridFieldSortableRows` component `Injectable`, and
allows any future enhancements in the new abstract class to
automatically apply without requiring additional changes in this module.

The class is introduced in silverstripe/framework 4.11.0 so the
dependency constraint needs to be updated.
2022-02-12 19:24:44 +13:00

1.2 KiB

has_many Example


/*** TestPage.php ***/
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridFieldConfig_RelationEditor;
use UndefinedOffset\SortableGridField\Forms\GridFieldSortableRows;

class TestPage extends Page
{
    private static $has_many = [
        'TestObjects' => 'TestObject',
    ];

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

        $conf = GridFieldConfig_RelationEditor::create(10);
        $conf->addComponent(GridFieldSortableRows::create('SortOrder'));

        $fields->addFieldToTab(
            'Root.TestObjects',
            GridField::create(
                'TestObjects',
                'TestObjects',
                $this->TestObjects(),
                $conf
            )
        );

        return $fields;
    }
}


/*** TestObject.php ***/
use SilverStripe\ORM\DataObject;

class TestObject extends DataObject
{
    private static $db = [
        'Title' => 'Text',
        'SortOrder' => 'Int',
    ];

    private static $indexes = [
        'SortOrder' => true,
    ];
    private static $has_one = [
        'Parent' => 'TestPage',
    ];

    private static $default_sort = 'SortOrder';
}