我在SonataAdminBundle中使用ACL时安装了SonataAdminBundle,SonataUserBundle和FOSUserBundle以及CoopTilleulsAclSonataAdminExtensionBundle。
列表由所有者过滤,一切都很好。顾客A只能看到他的物品,顾客b也只能看到他的物品。但如果我要创建一个新对象,我也可以看到其他客户的项目。
让我们说客户可以创建用于分配产品的组。这是在将产品创建为下拉列表(产品视图中的多对一关系)时完成的。但我也可以看到由其他客户创建的群组。
我该如何过滤这个?我想我必须在ProductsAdmin.php中进行任何过滤。或者它必须发生在ProductsRepository.php中吗?到目前为止,我无法在文档中找到任何提示,并且可以在任何类型的提示或链接中找到我可以找到的信息。
答案 0 :(得分:0)
您需要覆盖编辑树枝模板或创建自定义选择框。有关覆盖的信息,请参阅this question。我不知道你的实体结构,但过程应该像
if(!($sql = $link->prepare("INSERT into `USER` SET
`username` = ?,
`password` = ?,
`email` = ?,
`salt` = ?,
`iteration` = ?,
`method` = ?,
`person_id` = ?,
`role_id` = ?,
`skin_id` = ?"))){
echo "SQL Query Preparation has failed";
}
if(!($sql->bind_param("ssssisiii", $user, $phsh, $email, $new_salt, $new_iteration, $new_method, $result2, $result4, $result5))){
echo "Parameter Binding failed";
}
if(!($sql->execute())){
echo "MySQL Query Execution has failed";
}
管理类中的自定义选择查询,如
{% for object in objects %}
{% if owned by this user flag display %}
{{object}}
{% endif %}
{% endfor%}