【问题标题】:Silverstripe merge GroupedListsSilverstripe 合并 GroupedLists
【发布时间】:2015-11-05 21:41:40
【问题描述】:

我正在尝试返回单个 GroupedList,其中包含来自两个页面和 dataobjects 的信息。有没有一种简单的方法可以将两个列表合并在一起?

public function getGroupedContent()
{
    $dataobjects = GroupedList::create(FileNetObject::get());
    $pages = GroupedList::create($this->Children());

    $result = ??;


    return $result;
}

ArrayList 合并失败,标准 array_merge 也失败 - 在将查询结果放入单个 GroupedList 之前,我是否最好将其合并在一起?

【问题讨论】:

  • FileNetObject 和 $this->Children() 有什么共同点吗?两者都是页面?或者您可以按一些常见的字段或吸气剂对它们进行分组吗?
  • @wmk 都包含我用来分组的标题字段。

标签: php silverstripe


【解决方案1】:

在不了解您的情况的情况下,最简单的方法是:

return array_merge($dataobjects->toArray(), $pages->toArray());

要在模板中显示上述内容,您当然需要将其包装在另一个 ArrayList 中。

更新:如果您想对列表进行分组(这当然是您首先使用 GroupedList 的原因),您需要在合并数组之前执行此操作。更像:

return array_merge($dataobjects->GroupBy('Author')->toArray(), $page->GroupBy('Author')->toArray());

【讨论】:

  • 按照上述方法,然后将array_merge 的结果放入另一个ArrayList 中,除了循环groupedlist 的子项之外,我是否需要将模板修改为其他任何内容? (目前不渲染)
  • 对不起,我刚刚注意到你的评论。没有看到你的模板很难说。如果您的模板中仍有 $GroupBy ,您可能希望删除该位。否则,如果您发布代码,我可以尝试进一步查看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-14
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多