【问题标题】:Silverstripe drop down field does not show saved value as selectedSilverstripe 下拉字段未显示已选择的保存值
【发布时间】:2018-01-03 17:39:42
【问题描述】:

我在 CMS 中创建了一个下拉字段,如下所示:

class ProductPage extends Page {
    //.....

    private static $has_one = [
        'TeaserImage'=>Image::Class,
        'LinkedProduct'=>'Product'
    ];

    public function getCMSFields(){
        $fields = parent::getCMSFields();

        $productLinkField = DropdownField::create('LinkedProduct', 'Link a Product', Product::get()->map('ID', 'ProductName'));
        $productLinkField->setEmptyString('(Select one)');

        $fields->addFieldToTab('Root.Main', $productLinkField, 'Content');

        return $fields;
    }
}

问题是当我选择一个值并保存/发布页面时,下拉菜单会返回到“选择一个”而不是显示保存的选择。

我还没有检查数据库是否正在存储值,但我认为它是。

编辑:不是重复的。 建议的副本涉及从 CMS 中删除字段。 此问题涉及将下拉值设置为已保存的选择。

然而,答案是相似的。用户必须始终将 ID 附加到 has_one 字段,以便 CMS 与之交互。

【问题讨论】:

标签: silverstripe silverstripe-4


【解决方案1】:

默认情况下,SilverStripe 在将has_one 关系字段保存在数据库中时,会在它们的末尾附加一个“ID”参数。

因此,当您覆盖关系字段时,您需要将“ID”附加到字段标识符。

DropdownField::create('LinkedProductID', 'Link a Product', Product::get()->map('ID', 'ProductName'));

【讨论】:

    猜你喜欢
    • 2021-03-17
    • 2021-12-22
    • 2014-07-06
    • 2019-02-10
    • 2020-06-01
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多