为了账号安全,请及时绑定邮箱和手机立即绑定

Silverstripe 4 getCMSFields_forPopup 和 GridField

Silverstripe 4 getCMSFields_forPopup 和 GridField

PHP
拉风的咖菲猫 2023-06-18 16:29:51
多年后再次拾起它。我不能在 cms 弹出组件中使用 gridfield 吗?这里我有 Ingredient 实体,我想将数据库中的 Ingredients 添加到 Recipe 实体。即使是一个简单的也不会出现。食谱.php    ...    private static $db = [        'Title' => 'Varchar',        'Description' => 'Text',    ];    private static $has_one = [];    private static $many_many = [        'Ingredients' => Ingredient::class,    ];    public function getCMSFields_forPopup()    {        $gridConfig = GridFieldConfig_RelationEditor::create()->addComponents(            new GridFieldDeleteAction('unlinkrelation')        );        $grid = GridField::create(            'Ingredients',            'Ingredients',            $this->Ingredients(),            $gridConfig,        );        $fields = FieldList::create(            TextField::create('Title'),            TextareaField::create('Description'),            $grid        );        // or maybe something like..        // $fields->addFieldToTab('Main', 'Ingredients', 'Ingredients', $grid);        return $fields;    }
查看完整描述

1 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

getCMSFields_forPopup在 Silverstripe 4 或 Silverstripe 3 中不存在。这是在 Silverstripe 2 中。


试试getCMSFields吧。


public function getCMSFields()

{

    $fields = parent::getCMSFields();


    $ingredientsFieldConfig = GridFieldConfig_RelationEditor::create();


    $ingredientsField = GridField::create(

        'Ingredients',

        'Ingredients',

        $this->Ingredients(),

        $ingredientsFieldConfig

    );


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


    return $fields;

}


查看完整回答
反对 回复 2023-06-18
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信