SilverStripe CMS,按标题或其他匹配项搜索下拉字段?

SilverStripe CMS, Dropdown Field search by title or another match?

您好,在这个用例中,我想通过标题或产品代码进行搜索,但是 map('ID', 'Title') 方法不需要第二个参数的数组,我怎么能得到它?

/* original snippet */
DropdownField::create(
    'ProductID',
    'Prodotto',
    Product::get()->sort('Title', 'ASC')->map('ID', 'Title')
)->setEmptyString('-- Seleziona --');

/* dummy sample snippet */
DropdownField::create(
    'ProductID',
    'Prodotto',
    Product::get()->sort('Title', 'ASC')->map('ID', ['Code','Title'])
)->setEmptyString('-- Seleziona --');

我看了一下 API,不幸的是我找不到满足此要求的 DropdownField 方法。

谢谢

您的问题要求进行搜索,但您的代码正在为 DropDownField 生成一个字符串。

如果您想为下拉菜单添加更高级的标签,您需要在 Product DataObject 上使用辅助方法,例如

public function getCodeAndTitleFormatted() 
{
    return $this->Code . ': ' . $this->Title;
}

然后在 ->map() 语句中使用此方法创建 DropDownField,例如:

DropdownField::create(
    'ProductID',
    'Prodotto',
    Product::get()->sort('Title', 'ASC')->map('ID', 'getCodeAndTitleFormatted')
)->setEmptyString('-- Seleziona --');