我在主页上为$ 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'))