我想知道是否可以在SilverStripe中直接编辑has_one关系的值。
例如:
Person
(SiteTree
的扩展名)有一个Job
(DataObject
的扩展名),其中Job
包含标题,工资,位置等的数据库字段
CMS是否可以在新标签页中放置表单,以便在Job
页面中修改Person
的值?因此,Job
DataObject中的所有表单字段都放在Person
页面上,当我点击Job
页面上的保存时,它将保存到Person
表中?
我可以使用内联网格域编辑(感谢editable columns class in gridfieldextensions),但我相信这需要has_many / many_many关系?它也不适合添加图像和管理具有大量字段的对象。
我希望有道理。如果您需要更多说明,请告诉我。
编辑:我发现this hasonefield module已经过时,但是我所追求的是80%,如果它没有让你离开,那将是惊人的虽然您可以编辑父页面中的字段(Person
)。
答案 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中的值,但保存将起作用。