silverstripe-framework/tests/php/Forms/GridField/GridFieldDetailFormTest/Person.php

79 lines
2.0 KiB
PHP

<?php
namespace SilverStripe\Forms\Tests\GridField\GridFieldDetailFormTest;
use SilverStripe\Dev\TestOnly;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridFieldConfig_RelationEditor;
use SilverStripe\Forms\RequiredFields;
use SilverStripe\ORM\DataObject;
class Person extends DataObject implements TestOnly
{
private static $table_name = 'GridFieldDetailFormTest_Person';
private static $db = [
'FirstName' => 'Varchar',
'Surname' => 'Varchar'
];
private static $has_one = [
'Group' => PeopleGroup::class,
'PolymorphicGroup' => DataObject::class,
];
private static $many_many = [
'Categories' => Category::class,
'FavouriteGroups' => PeopleGroup::class
];
private static $many_many_extraFields = [
'Categories' => [
'IsPublished' => 'Boolean',
'PublishedBy' => 'Varchar'
]
];
private static $default_sort = '"FirstName"';
public function getCMSFields()
{
$fields = parent::getCMSFields();
// TODO No longer necessary once FormScaffolder uses GridField
$fields->replaceField(
'Categories',
GridField::create(
'Categories',
'Categories',
$this->Categories(),
GridFieldConfig_RelationEditor::create()
)
);
$fields->replaceField(
'FavouriteGroups',
GridField::create(
'FavouriteGroups',
'Favourite Groups',
$this->FavouriteGroups(),
GridFieldConfig_RelationEditor::create()
)
);
return $fields;
}
public function getCMSValidator()
{
return new RequiredFields(
[
'FirstName',
'Surname'
]
);
}
public function CMSEditLink()
{
return sprintf('my-admin/%d', $this->ID);
}
}