每个页面上的新 GridField 项目 - SilverStripe
New GridField item on each page - SilverStripe
我正在尝试使用 GridField 来允许 CMS 用户将信息(邮件列表)添加到同一页面类型(节目)的文章中,但是创建的每个新页面都已经填充了以前文章中的信息。
我认为这可能与我在 Shows 页面类型和 Mailing List DataObject 之间建立关系的方式有关,但我无法弄清楚每个新的展示页面需要做什么拥有自己的空白 GridField,因为每个节目的邮件列表都不相同...
我在这两个文件上尝试了 $has_one、$has_many 和 $many_many 的多种组合,但没有任何东西能按照我需要的方式工作,这是为了每个显示页面都有自己的 GridField(邮件列表)...
我现在的密码是:
Shows.php
private static $has_many = array(
'MailingLists' => 'MailingList'
);
...
$config = GridFieldConfig_RelationEditor::create();
$gridField = new GridField('MailingList',
'Shows Mailing List',
new DataList('MailingList'),
$config
);
$fields->addFieldsToTab('Root.Content.MailingList', array(
$gridField
));
MailingList.php
class MailingList extends DataObject {
private static $db = array(
'Title' => 'Varchar(25)',
'Description' => 'Varchar(55)'
);
private static $has_one = array(
'Shows' => 'Shows'
);
}
使用此代码
$gridField = new GridField('MailingList',
'Shows Mailing List',
new DataList('MailingList'),
$config
);
您 select 邮件列表 table 中的所有记录 new DataList('MailingList')
,但您应该使用 $this->MailingLists()
的相关记录列表
$gridField = new GridField('MailingList',
'Shows Mailing List',
$this->MailingLists(),
$config
);
我正在尝试使用 GridField 来允许 CMS 用户将信息(邮件列表)添加到同一页面类型(节目)的文章中,但是创建的每个新页面都已经填充了以前文章中的信息。
我认为这可能与我在 Shows 页面类型和 Mailing List DataObject 之间建立关系的方式有关,但我无法弄清楚每个新的展示页面需要做什么拥有自己的空白 GridField,因为每个节目的邮件列表都不相同...
我在这两个文件上尝试了 $has_one、$has_many 和 $many_many 的多种组合,但没有任何东西能按照我需要的方式工作,这是为了每个显示页面都有自己的 GridField(邮件列表)...
我现在的密码是:
Shows.php
private static $has_many = array(
'MailingLists' => 'MailingList'
);
...
$config = GridFieldConfig_RelationEditor::create();
$gridField = new GridField('MailingList',
'Shows Mailing List',
new DataList('MailingList'),
$config
);
$fields->addFieldsToTab('Root.Content.MailingList', array(
$gridField
));
MailingList.php
class MailingList extends DataObject {
private static $db = array(
'Title' => 'Varchar(25)',
'Description' => 'Varchar(55)'
);
private static $has_one = array(
'Shows' => 'Shows'
);
}
使用此代码
$gridField = new GridField('MailingList',
'Shows Mailing List',
new DataList('MailingList'),
$config
);
您 select 邮件列表 table 中的所有记录 new DataList('MailingList')
,但您应该使用 $this->MailingLists()
$gridField = new GridField('MailingList',
'Shows Mailing List',
$this->MailingLists(),
$config
);