我正在尝试创建一个下拉列表(ss4.2),但是我遗漏了一些东西,我不确定是什么。除了我需要的方法以外,我在其他方法上也取得了成功。有人可以帮我弄清楚我错过了什么吗?
<?php
namespace SilverStripe\Gallery;
use SilverStripe\ORM\DataObject;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\DropdownField;
use SilverStripe\ORM\DBEnum;
class Album extends DataObject {
private static $db = [
'AlbumType' => 'Enum(array("Type1","type2","Type3"), "Type1")',
];
private static $table_name = 'AlbumCoverPhoto';
public function getCMSFields() {
$fields = FieldList::create(
DropdownField::create('AlbumType',
'Album type',
singleton('Album')->dbObject('AlbumType')->enumValues())
);
return $fields;
}
}
谢谢。 林恩
答案 0 :(得分:2)
这只是该行中命名空间的问题:
!wordComplete
您要的数据对象是true
,而该类在singleton('Album')->dbObject('AlbumType')->enumValues())
名称空间内(请注意,请不要在您的PHP名称空间中使用SilverStripe作为供应商,因为它已保留用于核心SilverStripe模块和代码。
在引用类时,您应尝试使用Album
表示法,例如
SilverStripe\Gallery
实际上,您实际上并不需要引用该类,因为您仍然在该类的范围之内,因此可以改用::class
。试试这个:
singleton(Album::class)->dbObject('AlbumType')->enumValues()