SilverStripe和显示逻辑因某些字段类型而失败

SilverStripe和显示逻辑因某些字段类型而失败,silverstripe,Silverstripe,我正在SilverStripe 3.1.8网站上工作。我有一个DataExtension,它定义了一些字段,我试图使用显示逻辑来修改CMS的行为: private static $db = array( 'Enabled' => 'Boolean', 'Title' => 'Text' ); private static $has_one = array( 'Link' => 'SiteTree', 'Image' => 'Image' )

我正在SilverStripe 3.1.8网站上工作。我有一个DataExtension,它定义了一些字段,我试图使用显示逻辑来修改CMS的行为:

private static $db = array(
    'Enabled' => 'Boolean',
    'Title' => 'Text'
);
private static $has_one = array(
    'Link' => 'SiteTree',
    'Image' => 'Image'
);

/* this is a DataExtension */
public function updateCMSFields(FieldList $fields) {
    $fields->addFieldsToTab('Root.Other', array(
        CheckboxField::create('Enabled'),
        TextField::create('Title', "Title")->displayIf('Enabled')->isChecked()->end(),
        TreeDropdownField::create("LinkID", "Linked page", 'SiteTree')->displayIf('Enabled')->isChecked()->end(),
        UploadField::create('Image', "Image")->displayIf('Enabled')->isChecked()->end()
    ));

}
当我选中或取消选中“启用”复选框时,其他三个字段应相应地出现或消失。不幸的是,只有TextField显示,TreeDropdownField和UploadField始终显示

您知道为什么显示逻辑在这两种字段类型中失败,以及如何解决它吗?
谢谢大家!

似乎UploadFieldDropdownField属于的类别,您需要将它们包装在DisplayLogicWrapper

请参阅addFieldsToTab输入数组的最后两行

private static $db = array(
    'Enabled' => 'Boolean',
    'Title' => 'Text'
);
private static $has_one = array(
    'Link' => 'SiteTree',
    'Image' => 'Image'
);

/* this is a DataExtension */
public function updateCMSFields(FieldList $fields) {
    $fields->addFieldsToTab('Root.Other', array(
        CheckboxField::create('Enabled'),
        TextField::create('Title', "Title")->displayIf('Enabled')->isChecked()->end(),
        DisplayLogicWrapper::create(TreeDropdownField::create("LinkID", "Linked page", 'SiteTree'))->displayIf('Enabled')->isChecked()->end(),
        DisplayLogicWrapper::create(UploadField::create('Image', "Image"))->displayIf('Enabled')->isChecked()->end()
    ));

}

您知道您使用的是哪个版本的显示逻辑模块吗?嗨,Cam,我使用的是来自主分支的最新提交。此外,升级到SilverStrip 3.1.9后,问题仍然存在。您是否可以尝试使用1.0.8的显示逻辑查看那里发生了什么。您是否使用composer对依赖项进行排序?另外,我还发现我必须使用该模块的主开发版本。稳定版本不工作。嗨,Atari,我现在无法检查,但我尝试了DisplayLogicWrapper。这不起作用,唯一的区别是DisplayLogicWrapper使分隔表单中字段的可视水平线消失。我会尽快用master dev和1.0.8版(以上由Cam推荐)进行测试。是的,它改变了CSS样式,但我现在的版本使用UploadField可以工作-希望它能为您工作-正如我所说,使用master dev版本,不稳定-周末快乐!a、 )