带有自定义 Objects 的 Silverstripe 下拉菜单

Silverstripe Dropdown with Custom Objects

我有一个名为 X 的自定义 DataObject。在这个 Dataobject 和其他字段中,我想要一个包含自定义 DataObject Y 的其他条目的 DropdownField。我在那个下拉列表中的确切位置是值 -> url 并在下拉列表中显示标题作为标题。我可以让标题出现在下拉列表中,但是在 html 的检查员看来 value 属性总是空的 .

class X extends DataObject {
    public static $db = array(
        'Title'  => 'Varchar(255)',
        'SortID' => 'Int'
    );

    public static $has_one = array(
        'Y' => 'Y',
        'Thumbnail' => 'Image'
    );

    public static $summary_fields = array(
        'ID', 'Title'
    );


    public function getCMSFields(){
    $fields = parent::getCMSFields();
    $fields = FieldList::create(
            TextField::create('Title', 'Title'),
            DropdownField::create(
                'Y',
                'Y',
                 Y::get()->map(array('URL' => 'Title'))
            ),
            UploadField::create('Thumbnail', 'Thumbnail')
        );

        return $fields;
    }
}

map 方法接受两个参数,数组的 ID 和值。

DropdownField::create(
    'Y',
    'Y',
     Y::get()->map('URL', 'Title')
)