Silverstripe自动填充文本字段

时间:2018-06-14 02:30:00

标签: php silverstripe silverstripe-4

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

enter image description here

这是代码。

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

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';
}

1 个答案:

答案 0 :(得分:1)

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

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

修改

使用Title的setter函数也应该有效。这意味着您不需要使用setDisplayField。

class UserCompany extends DataObject {
  ...

  function Title() {
    return $this->CompanyName;
  }
}