搜索字段链接DataObject

时间:2014-04-04 17:24:34

标签: silverstripe

我正在设置tutorial 5 Mentor部分,因为我正在建立的网站上有教师,所以完全相同的概念。

当我从页面链接指导者时,当我搜索文本字段时,我得到的结果不显示名字字段,they show the dataobject id #.

我的字段是数据对象和数据对象上的FistName和LastName我设置了$ searchable_fields& $ summary_fields匹配这些列,但我仍然得到上面的结果。

此外,我的搜索字段为start shows this.注意占位符文本中的“部分匹配”。它不应该只显示字段名称吗?

使用3.1并且基本上只是为指导者部分复制并粘贴了教程5。该教程似乎开箱即用,所以我错过了什么?

1 个答案:

答案 0 :(得分:2)

标题是CMS中DataObject几乎所有基本演示文稿的默认显示值。 但并非所有DataObject都有标题,因此类DataObject的方法getTitle()会返回"#{$this->ID}

有两种方法可以解决您的问题:

  1. 覆盖DataObject(Mentor)中的getTitle()

    public function getTitle() {
        return "{$this->Firstname} {$this->Lastname}";
    }
    
  2. 告诉GridField上的搜索字段使用除title之外的其他东西(根据教程的示例代码)

    class Project extends Page {
        public function getCMSFields() {
            $config = new GridFieldConfig_RelationEditor();
            $autoCompleteComponent = $config->getComponentByType('GridFieldAddExistingAutocompleter');
            $autoCompleteComponent->setResultsFormat('$FirstName $LastName');
            $mentorsField = new GridField(
                'Mentors',
                'Mentors',
                $this->Mentors(),
                $config
            );           
            $fields->addFieldToTab('Root.Mentors', $mentorsField);
            return $fields;
        }
    }