可选的 OptionsetField 是 SilverStripe 3.2
Optional OptionsetField is SilverStripe 3.2
在 SilverStripe 3.1.* 中,我使用了一些带有 OptionsetFields 的表单,这些表单是可选的,因此不需要做出选择。这运作良好。但是自从我更新到 SilverStripe 3.2.0 之后,表单不再接受这个。提交时它会附带一条验证消息,即使我没有在整个表单中使用验证。
请参阅此屏幕截图:
这是字段的代码:
$ClassField = OptionsetField::create('Class', _t('General.CLASS', "Class"), array(
"S" => "S",
"E" => "E",
"U" => "U",
"R" => "R",
"O" => "O",
"P" => "P"
));
是否想在 SilverStripe 3.2.0 中再次使该字段可选?
这似乎是 3.2 中的错误,您现在必须使用 setEmptyString():
告诉 OptionsetField 它可以为空
$ClassField = OptionsetField::create(
'Class',
_t('General.CLASS', "Class"),
array(...)
)
->setEmptyString('none');
您可能还对 silverstripe-display-logic 模块感兴趣,它允许您根据某些条件显示某些字段:https://github.com/unclecheese/silverstripe-display-logic
在 SilverStripe 3.1.* 中,我使用了一些带有 OptionsetFields 的表单,这些表单是可选的,因此不需要做出选择。这运作良好。但是自从我更新到 SilverStripe 3.2.0 之后,表单不再接受这个。提交时它会附带一条验证消息,即使我没有在整个表单中使用验证。 请参阅此屏幕截图:
这是字段的代码:
$ClassField = OptionsetField::create('Class', _t('General.CLASS', "Class"), array(
"S" => "S",
"E" => "E",
"U" => "U",
"R" => "R",
"O" => "O",
"P" => "P"
));
是否想在 SilverStripe 3.2.0 中再次使该字段可选?
这似乎是 3.2 中的错误,您现在必须使用 setEmptyString():
告诉 OptionsetField 它可以为空$ClassField = OptionsetField::create(
'Class',
_t('General.CLASS', "Class"),
array(...)
)
->setEmptyString('none');
您可能还对 silverstripe-display-logic 模块感兴趣,它允许您根据某些条件显示某些字段:https://github.com/unclecheese/silverstripe-display-logic