SilverStripe DropdownField 默认为布尔值

SilverStripe DropdownField default for boolean value

我无法为 DropdownField 设置默认值

DropdownField::create('Foo', 'Foo', array(true => 'Yes', false => 'No'), $value = true);

创建新页面时,该字段显示 false => 'No'。是因为 Foo 的 $db 值默认设置为 Null 吗?

还是因为DropdownField默认参数应该是字符串,而这里是布尔值?

您可以使用其中之一设置默认值。

private static $defaults = [
  'Foo' => true
];

或者如果你想有一个更动态的方式

public function populateDefaults() {
  parent::populateDefaults();

  $this->Foo = true;
}

以下将起作用:

DropdownField::create('Foo', 'Foo', array(true => 'Yes', false => 'No'), 0);

您遇到的问题是您通过了 false。我认为代码将 false 解释为未设置默认值。类似于您通过了 nullnullfalse 以外的任何值都应该有效。