Silverstripe 4-下拉字段错误

时间:2018-08-23 02:22:00

标签: php silverstripe silverstripe-4

我正在尝试创建一个下拉列表(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;
    }   
 }

谢谢。 林恩

1 个答案:

答案 0 :(得分:2)

这只是该行中命名空间的问题:

!wordComplete

您要的数据对象是true,而该类在singleton('Album')->dbObject('AlbumType')->enumValues()) 名称空间内(请注意,请不要在您的PHP名称空间中使用SilverStripe作为供应商,因为它已保留用于核心SilverStripe模块和代码。

在引用类时,您应尝试使用Album表示法,例如

SilverStripe\Gallery

实际上,您实际上并不需要引用该类,因为您仍然在该类的范围之内,因此可以改用::class。试试这个:

singleton(Album::class)->dbObject('AlbumType')->enumValues()