【发布时间】:2023-04-09 23:11:02
【问题描述】:
所以,首先免责声明:谈到 SilverStripe,我有点菜鸟,但这个让我很烦恼。
我正在使用 GridField 来添加和编辑 DataObject 中的条目。这一切都很好,而且效果很好。我唯一不知道的是如何更改 EDITABLE 字段的顺序 - 这不是条目的初始表格显示(由 $config 设置),它是单击“添加”后的实际输入字段新”或去编辑记录。
目前 Image uploadForm 和 Signature <select> 框位于 Body HTMLText 字段下方,这很混乱,无法正常工作。我希望它们位于顶部,就在 Summary 元素的下方。
我尝试过使用 changeFieldOrder(),但这不适用于 GridField 对象类型,并且 $fields 对输入元素一无所知(我转储()并查看了它) .
MediaReleaseItem.php:
class MediaReleaseItem extends DataObject {
static $db = array (
'Title' => 'Varchar',
'DateUpdated' => 'Date',
'Summary' => 'Varchar',
'Image' => 'Varchar',
'Body' => 'HTMLText',
);
private static $has_one = array(
"Image" => "Image",
"MediaReleaseItem" => "MediaReleases",
"Signature" => "MediaReleaseSignature",
);
}
还有 MediaReleases.php:
class MediaReleases extends Page {
private static $has_many = array(
"MediaReleaseItems" => "MediaReleaseItem",
"Signature" => "MediaReleaseSignature",
);
function getCMSFields() {
$fields = parent::getCMSFields();
$config = GridFieldConfig_RecordEditor::create();
$config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array(
'Title'=> 'Title',
'DateUpdated' => 'Date',
'Summary' => 'Summary',
));
$mediaReleasesField = new GridField(
'MediaReleaseItem', // Field name
'Media Releases', // Field title
$this->MediaReleaseItems(),
$config
);
$fields->addFieldToTab('Root.MediaReleaseItems', $mediaReleasesField);
return $fields;
}
}
(签名只是在不同选项卡上具有不同 GridField 的另一个 DataObject,我没有包含它的代码,因为它几乎相同。)
【问题讨论】:
标签: php silverstripe