我正在为sitetree下拉列表使用treedropdown字段,尽管这是一个可选字段,希望能够清除/删除此值。我怎么用银色条纹呢?

    <?php
class StaticSidebar extends Page {

    static $db = array(
        'ExternalLink' => 'Text',
        'ExternalText' => 'Varchar',
        'ImageLink' => 'Text'
    );

    static $has_one= array(
        "Image" => "Image",
        "InternalLink" => "SiteTree"
    );

    static $allowed_children = array("none");

    public function getCMSFields()
    {
    $fields = parent::getCMSFields();

    $fields->addFieldToTab("Root.Content.Main", new TextField("ExternalText", "External Text"), "Content");
    $fields->addFieldToTab("Root.Content.Main", new TextField("ExternalLink", "External Link"), "Content");
    $fields->addFieldToTab("Root.Content.Main", new TreeDropdownField("InternalLinkID", "Internal Link", "SiteTree"), "Content");
    $fields->addFieldToTab("Root.Content.Main", new ImageField("Image"), "Content");
    $fields->addFieldToTab("Root.Content.Main", new TextField("ImageLink", "Image Link"), "Content");

        return $fields;
    }
}

class StaticSidebar_Controller extends Page_Controller
{


}

最佳答案

恐怕这是不可能的。
你可以做一些小事情,比如创建一个名为“无”的虚拟页面(带有特定页面类型,例如Nopage),用户可以选择它,然后你将实现OnBeErrError方法来检查这个页面类型,然后如果选择的页面是那个页面,那么将“MielalLink ID”字段设置为0。类型。不过,不是很优雅。
另一种选择是使用dropdownfield。这提供了一个简单的选择框。在使用站点树视图方面不太好,但是可以设置一个“空”值。
第三种选择可能是使用treemultiselect字段。此字段允许多个选择(与treedropdownfield相同,但使用复选框)。至少这样你可以取消选择所有项目。唯一的问题是,如果您的CMS用户选择了多个项目,使用哪个页面。
编辑:在SilverStripe3中,可以通过选择当前选定的项来清除/删除TreeDropDownField选择。

09-20 15:39