每个页面上新的GridField项-SilverStripe
我试图使用GridField来允许CMS用户将信息(邮件列表)添加到同一页面类型的文章中(显示),但创建的每个新页面都已经填充了以前文章中的信息 我认为这可能与我在Shows页面类型和邮件列表数据对象之间建立关系的方式有关,但我不知道我需要做什么才能让每个新的show页面都有自己的空白GridField,因为邮件列表对于每个show都不一样 我在这两个文件上尝试了许多$has_one、$has_many和$many_many的组合,但没有任何东西能让它按照我需要的方式工作,即每个节目页面都有自己的GridField(邮件列表) 我目前掌握的代码是: Shows.php每个页面上新的GridField项-SilverStripe,silverstripe,Silverstripe,我试图使用GridField来允许CMS用户将信息(邮件列表)添加到同一页面类型的文章中(显示),但创建的每个新页面都已经填充了以前文章中的信息 我认为这可能与我在Shows页面类型和邮件列表数据对象之间建立关系的方式有关,但我不知道我需要做什么才能让每个新的show页面都有自己的空白GridField,因为邮件列表对于每个show都不一样 我在这两个文件上尝试了许多$has_one、$has_many和$many_many的组合,但没有任何东西能让它按照我需要的方式工作,即每个节目页面都有自己
private static $has_many = array(
'MailingLists' => 'MailingList'
);
class MailingList extends DataObject {
private static $db = array(
'Title' => 'Varchar(25)',
'Description' => 'Varchar(55)'
);
private static $has_one = array(
'Shows' => 'Shows'
);
}
MailingList.php
private static $has_many = array(
'MailingLists' => 'MailingList'
);
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
);
您可以使用newdatalist('MailingList')
选择MailingList表中的所有记录,但是您应该使用$this->MailingList()
哦我的。上帝前几天我尝试了这个,但出现了一个服务器错误,这就是为什么我恢复使用new DataList()。。。你能解释一下为什么这次有效吗??$this->MailingLists()是否链接到$has\u许多位?感谢您的帮助:)是的
$this->MailingLists()
确实链接到了$has\u许多MailingLists
关系。很高兴知道,我一定尝试过使用$this->MailingLists()
当我将关系设置为$has_one
时,这就是为什么它对我不起作用的原因,我认为这不是问题所在。谢谢你澄清这一点up@freemiumprotip:将ss设置为dev模式以查看实际的错误消息,而不是webservers服务器错误页面,以简化开发。您可能还需要调整php.ini上的“显示错误”值。这样就更容易发现编码问题:)。或者直接从服务器上查看php错误日志。@FinBoWa谢谢你的提示-因为我问了这个问题,所以我启用了SS日志,这样我就可以看到我的代码有哪些部分被破坏了,这很有帮助。我还将启用开发模式,永远不会有太多的安全捕获!:)