我可以通过URL预先填写Silverstripe 4中新对象的字段吗?

问题描述 投票:1回答:1

我正在研究的S​​ilverstripe项目有一个名为Code的字段:

class ObjectName extends DataObject
{
  private static $db = [
    'Title' => 'Varchar',
    'Code' => 'Varchar',
    'Description' => 'HTMLText',
  ];

以下URL将打开CMS中创建新对象屏幕(在本地开发中):http://localhost.app/admin/object-management/ObjectName/EditForm/field/ObjectName/item/new

我们希望能够在该URL上添加一些内容来预先填充新对象的Code字段。

例如http://localhost.app/admin/object-management/ObjectName/EditForm/field/ObjectName/item/new?Code=CodeGoesHere

这在当前框架内是否可行?或者是否需要对CMS进行自定义修改?如果它需要自定义修改我应该使用什么方法?

silverstripe silverstripe-4
1个回答
1
投票

您可以通过将以下代码添加到ObjectName类来预设FormField的值:

public function populateDefaults() {
    parent::populateDefaults();
    $code = Controller::curr()->getRequest()->getVar("Code");
    $this->Code = $code;
}

这将从URL获取Code参数,并在字段为scaffolded之前使用此值预设新ObjectName的值。默认的脚手架使用调用DataObject的值来填充FormFields,因此您的GET-param将显示给用户。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.