带有自定义 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')
)
我有一个名为 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')
)