我在网站上使用tractorcow's 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';
}
答案 0 :(得分:1)
我刚查看了源代码,默认displayField
为Title
。您可以通过将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;
}
}