我目前正在从事的Silverstripe项目中有一个对象,其字段名为Code
:
class ObjectName extends DataObject
{
private static $db = [
'Title' => 'Varchar',
'Code' => 'Varchar',
'Description' => 'HTMLText',
];
以下URL将在CMS中打开“创建新对象”屏幕(在本地dev中):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进行自定义修改?如果需要自定义修改,我应该使用哪种方法?
答案 0 :(得分:0)
您可以通过将以下代码添加到ObjectName类来预设FormField的值:
public function populateDefaults() {
parent::populateDefaults();
$code = Controller::curr()->getRequest()->getVar("Code");
$this->Code = $code;
}
这将从字段中获取Code参数,并在将这些字段设置为脚手架之前使用此值预设新的ObjectName的值。默认的脚手架使用调用DataObject的值来填写FormField,因此您的GET参数将显示给用户。