【问题标题】:SilverStripe and Display Logic fails with certain field typesSilverStripe 和显示逻辑因某些字段类型而失败
【发布时间】:2015-01-15 14:01:01
【问题描述】:

我正在开发 SilverStripe 3.1.8 网站。我有一个定义一些字段的 DataExtension,我正在尝试使用 Display Logic 来修改 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 总是显示出来。

任何想法为什么显示逻辑在这两种字段类型上失败,以及如何解决它? 谢谢!

【问题讨论】:

标签: silverstripe


【解决方案1】:

UploadFieldDropdownField 似乎属于 Dealing with non-standard forms 的类别,您需要将它们包装在 DisplayLogicWrapper 中。 p>

查看 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()
    ));

}

【讨论】:

  • P.S.我还发现我必须使用模块的 master-dev 版本。 稳定版 不工作。
  • 嗨 Atari,我现在无法检查,但我确实尝试了 DisplayLogicWrapper。那没有用,唯一的区别是 DisplayLogicWrapper 使分隔表单中字段的可视水平线消失了。我会尽快用 master-dev 和 1.0.8 版(上面的 Cam 建议)进行测试。
  • 是的,它改变了 CSS 样式,但我现在使用 UploadField 的版本可以工作 - 希望它对你有用 - 正如我所说,使用 master-dev 版本,而不是稳定 - 周末快乐!一)
猜你喜欢
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多