Silverstripe DropdownField不遵循默认值参数

时间:2017-07-02 09:23:26

标签: silverstripe

非常简单的问题,我正在创建一个下拉字段并尝试设置所选的值,如下所示:

$tourField = DropdownField::create('Tour', 'Tour', Tour::get()->sort('TourName ASC')->map('ID', 'TourName')->toArray(), $currentTourID);

我已确认$ currentTourID包含正确的值(数字ID),并且该值存在于结果下拉列表中。渲染时,默认情况下不会选择下拉列表中的项目。所以我想我在这里有别的错误。

编辑:请注意,此字段是与对象的has_one关系字段,对于此对象,其值为null。我试图覆盖它并使用更聪明的东西设置它。

1 个答案:

答案 0 :(得分:1)

我的编辑让我意识到我所要做的就是设置这些字段的对象表示,而不是尝试手动覆盖默认值。这里的关键是有问题的下拉列表引用了对象中的关系。

所以而不是:

$currentTourID = $mySmartFunction();
$tourField = DropdownField::create('TourID', 'Tour', Tour::get()->sort('TourName ASC')->map('ID', 'TourName')->toArray(), $currentTourID);

我这样做了:

$this->TourID = $mySmartFunction();
$tourField = DropdownField::create('TourID', 'Tour', Tour::get()->sort('TourName ASC')->map('ID', 'TourName')->toArray());