Silverstripe 链接数据对象时的搜索字段

Silverstripe 链接数据对象时的搜索字段,silverstripe,Silverstripe,我基本上是在设置这个部分,因为我正在创建的站点有教师,所以概念完全相同 当我从页面链接导师时,当我搜索文本字段时,我得到的结果不会显示名字字段 我的字段是dataobject上的FistName和LastName,在dataobject上我设置了$searchable_字段和$summary_字段来匹配这些列,但我仍然得到上面的结果 此外,我的搜索字段会注意占位符文本中的“部分匹配”。它不应该只显示字段名吗 使用3.1,基本上只是复制和粘贴导师部分的教程5。本教程似乎是开箱即用的,那么我还缺少什

我基本上是在设置这个部分,因为我正在创建的站点有教师,所以概念完全相同

当我从页面链接导师时,当我搜索文本字段时,我得到的结果不会显示名字字段

我的字段是dataobject上的FistName和LastName,在dataobject上我设置了$searchable_字段和$summary_字段来匹配这些列,但我仍然得到上面的结果

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


使用3.1,基本上只是复制和粘贴导师部分的教程5。本教程似乎是开箱即用的,那么我还缺少什么呢?

Title是CMS中几乎所有
数据对象的基本表示形式的默认显示值。
但并非所有的
DataObject
都有标题,因此类
DataObject
有一个方法
getTitle()
,该方法返回
“{$this->ID}

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

  • 覆盖数据对象(导师)中的
    getTitle()

  • 告诉GridField上的搜索字段thingy使用标题以外的内容(根据教程的示例代码)


  • 太好了,谢谢你的详细解释。我将在周一尝试一下,但听起来好像已经涵盖了所有内容。接下来,覆盖getTitle()函数的第一个选项不起作用。结果返回一个高度很小的空列表。尽管第二个选项起作用。不确定,但第一个示例可能失败,因为在
    {$this->Firstname}{$this->Lastname}
    N是小写的,用
    {$this->Firstname}{$this->Lastname}{/code>试试看。哦,对了。谢谢你这么做。我刚刚快速复制并粘贴了,没有看到大写字母的部分。谢谢你的解决方案!
    
    public function getTitle() {
        return "{$this->Firstname} {$this->Lastname}";
    }
    
    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;
        }
    }