这应该相对简单。我知道如何创建表单并隐藏它并在选择特定的option
时显示它
我希望Dropdown
填充特定的DataObject
。这很简单。但我需要添加一个选项,向此Dropdown
添加“添加新内容”,其格式为
我可以处理提交(例如,如果值类似于'new'而不是ID
),但我不知道如何将此选项添加到select
{{1}或者,如果它是可能的。任何帮助表示赞赏!
答案 0 :(得分:3)
您可以使用DropdownField并使用您想要的任何键值对填充它。例如:
$itemsField = DropdownField::create(
'Items',
'Items',
['add-new' => 'Add new'] + $this->Items()->map()->toArray()
);
第三个参数是一个数组,它被转换为下拉列表的option
html元素。
然后,您可以将其添加到表单FieldList
:
$form = Form::create(
$this,
'MyForm',
FieldList::create(
[
$someField,
$someOtherField,
$itemsField
]
),
$actions,
$requiredFields
);
答案 1 :(得分:1)
选择$has_one
的下拉菜单很好。例如。如果您有Addresses
列表并想要选择Country
。
有时必须添加新的Country
。为此,我使用quickaddnew extension添加了一个很好的按钮"添加新的"在下拉列表下方,打开一个用于添加新项目的模式中的表单。您可以在代码中使用它,如下所示:
public function getCMSFields() {
/**
* @FieldList
*/
$fields = parent::getCMSFields();
$countries = function() {
return Country::get()->map('ID','Title')->toArray();
};
$country = new DropdownField('CountryID', 'Country', $countries());
$country->setEmptyString('-- please select --');
$country->useAddNew('Country', $countries);
$fields->insertAfter($country, 'Telephone');
$fields->removeByName('SortOrder');
return $fields;