在SilverStripe

时间:2015-09-22 05:18:58

标签: silverstripe

我想知道是否可以在SilverStripe中直接编辑has_one关系的值。

例如:

PersonSiteTree的扩展名)有一个JobDataObject的扩展名),其中Job包含标题,工资,位置等的数据库字段

CMS是否可以在新标签页中放置表单,以便在Job页面中修改Person的值?因此,Job DataObject中的所有表单字段都放在Person页面上,当我点击Job页面上的保存时,它将保存到Person表中?

我可以使用内联网格域编辑(感谢editable columns class in gridfieldextensions),但我相信这需要has_many / many_many关系?它也不适合添加图像和管理具有大量字段的对象。

我希望有道理。如果您需要更多说明,请告诉我。

编辑:我发现this hasonefield module已经过时,但是我所追求的是80%,如果它没有让你离开,那将是惊人的虽然您可以编辑父页面中的字段(Person)。

1 个答案:

答案 0 :(得分:2)

有一个fork of simon's orginal has-one-edit module仍然可用并且可以安装作曲家,它可以编辑has_one关系的字段(或所有字段)的逻辑。安装它正在运行

composer require stevie-mayhew/hasoneedit:1.0.x@stable

然后你可以定义你的一个关系的几个字段,命名应该是HasOneName-_1_-FieldName

来自文档:

  

例如,假设您有一个名为Show的has_one,并且has_one有一个名为Title的字段您要编辑。您要添加字段TextField::create('Show-_1_-Title', 'Show Title')

     

要添加对您自己的表单的支持,您需要将sgn_hasoneedit_UpdateFormExtension扩展添加到您的控制器并在将表单返回到模板之前调用$ this-> extend('updateEditForm',$ form)。如果没有这个,字段将不会填充has_one中的值,但保存将起作用。