每个页面上新的GridField项-SilverStripe

每个页面上新的GridField项-SilverStripe,silverstripe,Silverstripe,我试图使用GridField来允许CMS用户将信息(邮件列表)添加到同一页面类型的文章中(显示),但创建的每个新页面都已经填充了以前文章中的信息 我认为这可能与我在Shows页面类型和邮件列表数据对象之间建立关系的方式有关,但我不知道我需要做什么才能让每个新的show页面都有自己的空白GridField,因为邮件列表对于每个show都不一样 我在这两个文件上尝试了许多$has_one、$has_many和$many_many的组合,但没有任何东西能让它按照我需要的方式工作,即每个节目页面都有自己

我试图使用GridField来允许CMS用户将信息(邮件列表)添加到同一页面类型的文章中(显示),但创建的每个新页面都已经填充了以前文章中的信息

我认为这可能与我在Shows页面类型和邮件列表数据对象之间建立关系的方式有关,但我不知道我需要做什么才能让每个新的show页面都有自己的空白GridField,因为邮件列表对于每个show都不一样

我在这两个文件上尝试了许多$has_one、$has_many和$many_many的组合,但没有任何东西能让它按照我需要的方式工作,即每个节目页面都有自己的GridField(邮件列表)

我目前掌握的代码是:

Shows.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'
    );
}

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日志,这样我就可以看到我的代码有哪些部分被破坏了,这很有帮助。我还将启用开发模式,永远不会有太多的安全捕获!:)