2017-04-26 53 views
2

我有一个自定义的DataObject称为X.在这个Dataobject amoung其他领域,我想有一个自定义DataObject Y的其他项的DropdownField。我正是在该下拉是值 - > URL并在下拉菜单中显示标题作为标题。我可以将标题显示在下拉菜单中,但在与HTML检查员一起查看后,值看起来像值属性始终为空Silverstripe下拉与自定义对象

class X extends DataObject { 
    public static $db = array(
     'Title' => 'Varchar(255)', 
     'SortID' => 'Int' 
    ); 

    public static $has_one = array(
     'Y' => 'Y', 
     'Thumbnail' => 'Image' 
    ); 

    public static $summary_fields = array(
     'ID', 'Title' 
    ); 


    public function getCMSFields(){ 
    $fields = parent::getCMSFields(); 
    $fields = FieldList::create(
      TextField::create('Title', 'Title'), 
      DropdownField::create(
       'Y', 
       'Y', 
       Y::get()->map(array('URL' => 'Title')) 
      ), 
      UploadField::create('Thumbnail', 'Thumbnail') 
     ); 

     return $fields; 
    } 
} 

回答

2

map方法接受两个参数,即数组的id和值。

DropdownField::create(
    'Y', 
    'Y', 
    Y::get()->map('URL', 'Title') 
) 
+0

首先感谢您的回复,现在它似乎插入了正确的值,但在模板中显示它似乎会返回服务器错误。该问题仅出现在Dropdown的值,其他字段的工作,所以它不是与函数我循环的问题。我尝试使用以下变量来获取它:$ Y –

+0

不需要了解它,您的答案非常有帮助。谢谢 ! –