【问题标题】:SilverStripe ModelAdminSilverStripe 模型管理员
【发布时间】:2016-02-05 13:36:30
【问题描述】:

我是 silverstripe 框架的新手,并试图在管理面板中获取菜单列表。

我发现了很多通过 Menu(1) 和 Menu(2) 等在前端显示菜单的示例,但没有得到任何示例代码来在管理模型中获取相同的菜单数组。

我试过的代码是:

public function getCMSfields() {
    $fields = FieldList::create(TabSet::create('Root'));
    $fields->addFieldsToTab('Root.Main', array(
        TextField::create('Name'),
        DropdownField::create('URL')
            ->setSource(SiteTree::get()),

    ));

    return $fields;
}

【问题讨论】:

标签: php silverstripe


【解决方案1】:

ModelAdmin 主要用于管理 DataObjects 而不是 Pages。查看DocsLesson,了解有关 ModelAdmin 的更多信息。

但如果你想在 ModelAdmin 中管理页面,你可以这样做

class MyPageAdmin extends ModelAdmin {

  ...
  ...

  private static $managed_models = array(
    'Page'
  );

  public function getList() {
    $list = parent::getList();

    if($this->modelClass == 'Page'){
      $list = $list->filter('ParentID', '1');
    }

    return $list;
  }
}

要仅管理特定页面中的子项,请使用 getList() 函数并根据需要过滤列表。

【讨论】:

    【解决方案2】: