我在ModelAdmin中有一个Dataobject,其中包含以下字段:
class NavGroup extends DataObject {
private static $db = array(
'GroupType' => 'Enum("Standard,NotStandard","Standard")',
'NumberOfBlocks' => 'Int'
);
public function getCMSFields() {
$groupTypeOptions = singleton('NavGroup')->dbObject('GroupType')->enumValues();
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Main', new Dropdownfield('GroupType', 'Group Type', $groupTypeOptions));
$fields->addFieldToTab('Root.Main', new Numericfield('NumberOfBlocks', 'Number of Blocks'));
return $fields;
}
}
Run Code Online (Sandbox Code Playgroud)
如果GroupType == "Standard"我希望NumberOfBlocks字段自动隐藏,那么它对用户隐藏.这应该动态发生.
SilverStripe中是否提供此功能,还是需要添加一些自定义JavaScript?
您需要使用DisplayLogic模块......
https://github.com/unclecheese/silverstripe-display-logic
然后你的功能可以写成......
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldsToTab('Root.Main',array(
Dropdownfield::create('GroupType', 'Group Type', singleton('NavGroup')->dbObject('GroupType')->enumValues())),
Numericfield::create('NumberOfBlocks', 'Number of Blocks')
->displayIf('GroupType')->isEqualTo('Standard')
));
return $fields;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1026 次 |
| 最近记录: |