【问题标题】:New GridField item on each page - SilverStripe每页上的新 GridField 项 - SilverStripe
【发布时间】:2016-04-04 15:45:09
【问题描述】:

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

我认为这可能与我设置 Shows 页面类型和 Mailing List DataObject 之间关系的方式有关,但我无法弄清楚我需要为每个新的 show 页面做什么它是自己的空白 GridField,因为每个节目的邮件列表都不相同...

我在这两个文件上尝试了许多 $has_one、$has_many 和 $many_many 的组合,但没有任何东西可以按照我需要的方式工作,即每个 Show 页面都有自己的 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'
    );
}

【问题讨论】:

    标签: silverstripe


    【解决方案1】:

    使用此代码

    $gridField = new GridField('MailingList',
       'Shows Mailing List',
       new DataList('MailingList'),
       $config
    );
    

    您使用new DataList('MailingList') 选择MailingList 表中的所有记录,但您应该使用$this->MailingLists() 的相关记录列表

    $gridField = new GridField('MailingList',
       'Shows Mailing List',
       $this->MailingLists(),
       $config
    );
    

    【讨论】:

    • 哦。我的。上帝!前几天我尝试了这个并且得到了一个服务器错误,这就是为什么我恢复使用 new DataList() ......你能解释一下为什么这次它会起作用吗? $this->MailingLists() 是否链接到 $has_many 位?感谢您的帮助:)
    • 是的 $this->MailingLists() 确实链接到 $has_many MailingLists 关系。
    • 很高兴知道,我必须尝试使用​​$this->MailingLists(),而我将关系设置为$has_one,这就是为什么它对我不起作用,我认为这不是问题是。感谢您清除它
    • @freemium 一个提示:将 ss 设置为 dev 模式以查看实际的错误消息,而不是 webservers 服务器错误页面,以简化开发。您可能还需要调整 php.ini 上的显示错误值。这使得更容易发现编码问题:)。或者直接从服务器查看php错误日志。
    • @FinBoWa 感谢您的提示 - 因为我问过这个问题,所以我已经启用了 SS 日志,这样我就可以看到我的代码的哪一部分被破坏了,这很有帮助。我也会启用开发模式,永远不会有太多的安全隐患! :)
    猜你喜欢
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 2022-10-31
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    相关资源
    最近更新 更多