Silverstripe 3.4+;/如何将某些布尔字段组合到CheckboxFieldSet中?

Silverstripe 3.4+;/如何将某些布尔字段组合到CheckboxFieldSet中?,checkbox,backend,silverstripe,Checkbox,Backend,Silverstripe,默认情况下,Silverstripe在后端将每一个布尔字段作为复选框呈现在新行中。有没有一种简单的方法可以将实际对象的某些布尔字段合并到CheckboxFieldSet中,从而使字段彼此相邻地渲染?这将节省空间并使其可读性更好 我只想在那里有具体的布尔字段,但不是所有的字段(只有烤面包机,微波炉,烧烤)。下面是一个简化的示例: House.php 我们需要一份通缉犯名单 CheckboxSetField表单字段无法处理不同的DB字段。 您需要一个自定义表单字段(扩展FormField)来构建所描

默认情况下,Silverstripe在后端将每一个布尔字段作为复选框呈现在新行中。有没有一种简单的方法可以将实际对象的某些布尔字段合并到CheckboxFieldSet中,从而使字段彼此相邻地渲染?这将节省空间并使其可读性更好

我只想在那里有具体的布尔字段,但不是所有的字段(只有烤面包机,微波炉,烧烤)。下面是一个简化的示例:

House.php
我们需要一份通缉犯名单

CheckboxSetField
表单字段无法处理不同的DB字段。 您需要一个自定义表单字段(扩展
FormField
)来构建所描述的功能

或者,您可以使用将选定值存储在文本db字段中的

对于已知列表,您可以使用
MultiValueCheckboxField
MultiValueDropdownField

private static $db = array(
  'Amenities' => 'Text',
);

public function getCMSFields() {
  $fields = parent::getCMSFields();
  $fields->replaceField('Amenities', MultiValueCheckboxField::create('Amenities', 'Amenities', $this->getAllAvailableAmenities()));

  return $fields;
}

欢迎来到堆栈溢出!您可以先学习并创建一个示例。这使我们更容易帮助您。如果您只想更改cms中的显示,您可以添加样式表,然后设置复选框元素的样式<代码>浮动:左;宽度:250px或任何适合页面的样式。这可能是这种情况下的一种解决方法,如果不太复杂且不值得努力,我更喜欢编程解决方案。在某个时候,我需要这样的下拉字段,然后我回到原点(这是一个几乎相同的问题,为下拉字段提供某些字段)。嗨,Greg,我实际上不想在CheckboxSetField中处理不同的DB字段,我只想要3个布尔字段(烤面包机、微波炉、烧烤)CheckboxSetField中实际数据对象的。DataObject也有其他字段,但这些字段应该被忽略。
private static $db = array(
  'Amenities' => 'Text',
);

public function getCMSFields() {
  $fields = parent::getCMSFields();
  $fields->replaceField('Amenities', MultiValueCheckboxField::create('Amenities', 'Amenities', $this->getAllAvailableAmenities()));

  return $fields;
}