0

我在主页上为 $slideImages 创建了一个 $many_many 数组。经过大量阅读和尝试后,我仍然无法告诉 CMS 我希望图像出现在模板中的顺序。默认情况下,它们按我相信的上传日期排序。

我可以创建网格字段,但似乎无法让文本字段输入排序编号。现在我刚刚完成了一条引导我到 gridFieldComponent 的兔子路径,但是我收到了一个错误,并且文档没有帮助我。

use SilverStripe\Assets\Image;
use SilverStripe\AssetAdmin\Forms\UploadField;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\GridField\GridFieldComponent;
use SilverStripe\Forms\GridField\GridFieldConfig_RelationEditor;
use SilverStripe\Forms\GridField\GridField;

class HomePage extends Page
{
    private static $db = [];

    private static $has_one = [];

    private static $many_many = [
        'SliderImage'=>Image::Class
    ];

    private static $owns = [
        'SliderImage'
    ];
    private static $many_many_extraFields= [
        'SliderImage'=>array(            
            'Sort'=>'Int'
        )         
    ];

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

        $fields->addFieldToTab('Root.Attachments', UploadField::create('SliderImage', 'Sllider Images')->setFolderName('HomePageSlides'));

        $gridFieldConfig = GridFieldConfig_RelationEditor::create()->addComponents(

            new GridFieldComponent(TextField('Sort'))
    );

        $gridField = new GridField("SliderImage", "Slider Image", $this->SliderImage()->sort('Sort'), $gridFieldConfig);

        $fields->addFieldToTab("Root.Attachments", $gridField);

        return $fields;
    }
}

我得到的错误是:

“未捕获的错误:无法实例化接口 SilverStripe\Forms\GridField\GridFieldComponent”

4

1 回答 1

1

根据 wmk 的评论,您在字段的初始化中缺少一个new或。::createTextFieldSort

应该:

new GridFieldComponent(new TextField('Sort'))

或者更好:

GridFieldComponent::create(TextField::create('Sort'))
于 2018-01-08T03:05:38.533 回答