Silverstripe 用户表单模块,添加自定义字段
Silverstripe userform module, adding custom fields
我正在向用户窗体模块添加自定义下拉菜单,一切似乎都正常,但是:
如果我设置如下:
[文本域一] - 下拉选项一
[文本域二] - 下拉选项二
似乎只保存了文本域一下的设置,而忽略了文本域二。如果我然后返回并再次设置文本字段二,它会清除文本字段一。
我应该迭代某些东西来独立保存每个值还是...?
class;
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')));
}
}
和我的config.yml
EditableFormField:
extensions:
- CustomEditableFormField
我想你想继承 EditableFormField,而不是修饰它。
一般的经验法则也是一个字段对应一个数据(但不一定)。
并且表单字段是通用的,不特定于某个目的,因为这就是为什么它们是可编辑的,而不是无休止的用例数组。
所以我不确定这个解决方案是否符合您的要求。
特别是因为 EditableFormField::getFieldConfiguration() 不采用 任何 参数,更不用说整个 FieldList 了。
您似乎只是想跳过添加表单字段的配置步骤,在这种情况下,自定义 子类 肯定是您的答案。
添加自定义扩展的正确方法是:
public function updateFieldConfiguration(FieldList $fields)
{
$fields->push(DropdownField::create(
$this->owner->getSettingName('CustomTextId'),
'Custom field',
$this->getData(),
$this->owner->getSetting('CustomTextId'))
);
}
主要问题在于调用 getSetting 函数的位置。
我正在向用户窗体模块添加自定义下拉菜单,一切似乎都正常,但是:
如果我设置如下: [文本域一] - 下拉选项一 [文本域二] - 下拉选项二
似乎只保存了文本域一下的设置,而忽略了文本域二。如果我然后返回并再次设置文本字段二,它会清除文本字段一。
我应该迭代某些东西来独立保存每个值还是...?
class;
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')));
}
}
和我的config.yml
EditableFormField:
extensions:
- CustomEditableFormField
我想你想继承 EditableFormField,而不是修饰它。
一般的经验法则也是一个字段对应一个数据(但不一定)。
并且表单字段是通用的,不特定于某个目的,因为这就是为什么它们是可编辑的,而不是无休止的用例数组。
所以我不确定这个解决方案是否符合您的要求。
特别是因为 EditableFormField::getFieldConfiguration() 不采用 任何 参数,更不用说整个 FieldList 了。
您似乎只是想跳过添加表单字段的配置步骤,在这种情况下,自定义 子类 肯定是您的答案。
添加自定义扩展的正确方法是:
public function updateFieldConfiguration(FieldList $fields)
{
$fields->push(DropdownField::create(
$this->owner->getSettingName('CustomTextId'),
'Custom field',
$this->getData(),
$this->owner->getSetting('CustomTextId'))
);
}
主要问题在于调用 getSetting 函数的位置。