Silverstripe 4 getCMSFields_forPopup 和 GridField

多年后再次拾起它。我不能在 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;

    }


拉风的咖菲猫
浏览 102回答 1
1回答

繁华开满天机

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;}
打开App,查看更多内容
随时随地看视频慕课网APP