在一个列表中显示来自不同类的数据对象 - SilverStripe 3.4

时间:2016-11-01 18:30:34

标签: silverstripe

我想创建一个包含不同类的数据对象的循环列表。

类似的东西,但正常运作

DataObject::get()->filter('ClassName, ['MyClass', 'MyOtherClass']);

有没有办法在不进行子类化的情况下实现这一目标?

1 个答案:

答案 0 :(得分:2)

csy_dot_io您可以使用两个对象列表创建ArrayList

public function getCombinedList()
{

    $list = ArrayList::create();
    $pushToList = function($object) use (&$list)
    {
        $list->push($object);
    };

    MyClass::get()->each($pushToList);
    MyOtherClass::get()->each($pushToList);

    return $list;

}

如果您希望在一个GridField中管理多个对象,那么您可以查看gridfieldextensions,特别是GridFieldAddNewMultiClass组件。