我觉得我在这里缺少一些简单的东西... TLDR:使用sonata_type_model字段,它在向父节点添加新子实体时使用模态,如何将父节点传递给子实体以将其添加到子节点实体的参考字段?
我有两个实体,“用户”和“角色”实体。
用户 - > OneToMany - >作用。
我正试图弄清楚如何从用户的Sonata Admin Bundle页面创建,编辑和删除角色。
在我的UserAdmin类中,我已经配置了表单字段,如下所示:
$formmapper->add('roles', 'sonata_type_model', array(
'required' => false,
'btn_delete' => true,
'btn_list' => true,
'multiple' => true,
'btn_add' => true,
))
现有角色显示正常。如果我单击角色字段下的“添加”按钮,则会显示“模态”窗口,其中包含“角色”管理表单中的字段。我的问题是,当我保存新角色时,它没有正确引用创建它的用户。我不知道如何将父USER实体传递给子ROLE实体!这应该很简单但是。我无法在任何地方找到这个答案
答案 0 :(得分:0)
我不认为这是解决此问题的预期方法,但需要在编辑用户实体时在模式窗口中打开的“角色”实体表单上设置“用户”实体是通过使用jQuery ajaxComplete()函数侦听ajax窗口打开,检查它是否是正确的,从页面URL中获取用户ID,并在隐藏的表单元素中设置该ID
jQuery(document).ready(function() {
$(document).ajaxComplete(function (event, request, settings) {
if (settings.url.indexOf('/your-entity-admin-path-') >= 0){
var pathArray = window.location.pathname.split( '/' );
$('.modal-body .box-body input[type=hidden]').val(pathArray[3]);
}
});
});
一个讨厌的解决方案,但有时我们只需要工作......