0

我目前正在尝试在 GridField 中管理一个类的项目以及子类的项目(想想一个包含“Apple”和“Banana”项目的 GridField,这两个项目都是“Fruit”的子类)。

我已经找到了如何使用详细信息表单中的某个 ClassName 下拉菜单来切换项目的类(正如它在 SiteTree 项目的“设置”选项卡中包含的“页面类型”下拉菜单中完成的那样),并且工作正常。

我现在想做的是已经在创建时选择了子类,在 GridField 的“添加”按钮旁边有一个包含所有类的下拉列表。不幸的是,“添加”按钮似乎在 LeftAndMain 中调用了一些“EditForm”操作,我不知道从这里去哪里。

有谁知道这是否可以扩展一些 GridFields 的类等?

4

2 回答 2

2

这个功能会非常有用,所以我在我的网格字段扩展模块中实现了它:有问题的提交

网格字段扩展模块

要启动并运行它,请执行以下代码。它将自动使用父类和任何子类填充下拉列表,并让用户选择要创建的类型。

$config = $grid->getConfig();
$config->removeComponentsByType('GridFieldAddNewButton');
$config->addComponent(new GridFieldAddNewMultiClass());
于 2013-02-02T03:19:31.387 回答
0

我刚刚在 SS 3.1 中做了类似的事情,它是一个 2 步过程,但可以修改为 1 步。

在您的超类中,在 getCMSFields() 中为“ClassName”添加一个下拉列表,例如:

public function getCMSFields() {
    $fields = parent::getCMSFields();
    $fields->addFieldToTab("Root.Main", 
        new DropdownField("ClassName", "Type", 
            array(
                "Apple" => "Apple", 
                "Banana" => "Banana",

            )
        )
    );

    return $fields;
}

然后,当他们在该页面上单击保存时,它将显示所选子类的获取 CMS 字段。

于 2014-02-20T03:52:02.597 回答