如何将图像作为SilverStripe中的Many_many的一部分进行分类



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

我可以创建GridField,但我似乎无法在排序号码中输入Textfield。现在,我刚刚完成了一条兔子步道,这使我进入了GridfieldComponent,但我遇到了一个错误,文档没有帮助我。

use SilverStripeAssetsImage;
use SilverStripeAssetAdminFormsUploadField;
use SilverStripeFormsTextField;
use SilverStripeFormsGridFieldGridFieldComponent;
use SilverStripeFormsGridFieldGridFieldConfig_RelationEditor;
use SilverStripeFormsGridFieldGridField;
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"

根据WMK的评论,您在TextField的CC_3初始化中缺少new::create

应该是:

new GridFieldComponent(new TextField('Sort'))

或更高:

GridFieldComponent::create(TextField::create('Sort'))

最新更新