我在用户表单模块中添加了一个自定义下拉菜单,但一切似乎都正常:
如果我设置以下内容:[Textfield One]-下拉选项一[Textfield Two]-下拉选项二
它似乎只将设置保存在TextfieldOne下,而忽略TextfieldTwo。如果我返回并再次设置"文本字段二",它将删除"文本字段一"。
我应该对某个东西进行迭代,独立保存每个值还是。。。?
班级;
class CustomEditableFormField extends DataExtension
{
public function updateFieldConfiguration(FieldList $fields)
{
$fields->push(DropdownField::create($this->owner->getSettingName('CustomTextId'), 'Custom field')
->setSource(array("1" => "One", "2" => "Two"))
->setEmptyString($this->owner->getSetting('CustomTextId')));
}
}
和我的配置yml
EditableFormField:
extensions:
- CustomEditableFormField
添加自定义扩展的正确方法是:
public function updateFieldConfiguration(FieldList $fields)
{
$fields->push(DropdownField::create(
$this->owner->getSettingName('CustomTextId'),
'Custom field',
$this->getData(),
$this->owner->getSetting('CustomTextId'))
);
}
主要问题在于getSetting函数的调用位置。
我想你想把EditableFormField子类化,而不是修饰它。
一般的经验法则也是一个字段对一条数据(但不一定)。
表单字段是通用的,而不是特定于某个目的,这就是为什么它们是可编辑的,而非无休止的用例数组。
所以我不确定这个解决方案是你想要的。
特别是因为EditableFormField::getFieldConfiguration()不接受任何参数,更不用说整个FieldList了。
您似乎只是想跳过添加表单字段的配置步骤,在这种情况下,自定义子类肯定是您的答案。