在Silverstripe 4中,GridField的标准“添加”按钮不执行任何操作

时间:2018-06-02 11:40:15

标签: php silverstripe silverstripe-4

我第一次尝试使用GridField组件。 我使用GridFieldConfig_RecordEditor添加了一个“添加”按钮,如下所示:

class AdvertisersPage extends Page
{
    //...

    public function getCMSFields()
    {
        $fields = parent::getCMSFields();

        $advertiserAccounts = AdvertiserAccount::get();

        $fields->addFieldToTab('Root.Advertisers',
            $gridField = new GridField(
                'Advertisers',
                'All advertisers',
                $this->Advertisers(),
                GridFieldConfig_RecordEditor::create()
            )
        );

        return $fields;
    }
}

但除了在浏览器中更改URL之外,该按钮不会执行任何操作

  

管理员/页/编辑/显示/ 7

  

管理员/页/编辑/ EditForm / 7 /场/广告商/产品/新

以下是相关的DataObject类:

class AdvertiserAccount extends DataObject
{
    //...

    private static $has_one = [
        'AdvertisersPage' => AdvertisersPage::class,
    ];

    public function getCMSFields()
    {
        $fields = FieldList::create(
            TextField::create('contactNumber'),
            TextField::create('nickname')
        );

        return $fields;
    }
}

我需要你的建议来解决这个问题。

1 个答案:

答案 0 :(得分:0)

这是一个非常奇怪的错误。

我做了一些实验并重命名了相关的课程。我发现问题只出现在第一个GridField构造函数参数 name 是以下之一:'Adv','Advert','Advertise','Advertiser'和'Advertisers'。在这个项目中,我还没有任何有这样名字的课程。对所有项目文件的全文搜索没有给出任何结果。

所以,我只是通过重命名参数来解决问题,但那是什么?