0

我在网站上使用了tractorcow 的 Silverstripe-autocomplete模块来在文本字段上实现自动完成功能。但是,我想知道为什么它返回 ID 字段而不是文本(在 CompanyName 字段上)。

在此处输入图像描述

这是代码。

在我的页面上,我在表单上使用它:

public function MyForm(){
$fields = FieldList::create();
...
$fields->push(AutoCompleteField::create('StudentGroup_Name', 'Company name *','',null,null,'UserCompany','CompanyName')->setAttribute('required','required'));
...

}

然后,我的数据对象如下:

class UserCompany extends DataObject{

  private static $db = [
    'CompanyID'      =>  'Int',
    'CompanyName'    =>  'Varchar(512)'
  ];

  private static $summary_fields = [
    'CompanyID'       =>  'CompanyID',
    'CompanyName'     =>  'CompanyName'
  ];

  private static $default_sort = 'CompanyName ASC';
}
4

1 回答 1

1

我刚刚检查了源代码,默认displayFieldTitle. 您可以通过将字段更改为或使用方法来更改UserCompany对象。CompanyNameTitlesetDisplayField

$fields->push(AutoCompleteField::create('StudentGroup_Name', 'Company name *','',null,null,'UserCompany','CompanyName')->setDisplayField('CompanyName')->setAttribute('required','required'));

编辑

使用 setter 函数Title也应该可以工作。这意味着您不需要使用 setDisplayField。

class UserCompany extends DataObject {
  ...

  function Title() {
    return $this->CompanyName;
  }
}
于 2018-06-14T08:41:44.383 回答