gpt4 book ai didi

symfony - 在 configureFormFields 中使用 SonataAdminBundle ACL

转载 作者:行者123 更新时间:2023-12-04 08:54:40 25 4
gpt4 key购买 nike

在 SonataAdminBundle 中使用 ACL 时,我已经安装了 SonataAdminBundle、SonataUserBundle 和 FOSUserBundle 以及 CoopTilleulsAclSonataAdminExtensionBundle。

列表由所有者过滤,一切都很好。客户 A 只能看到他的商品,客户 B 也只能看到他的商品。但是如果我要创建一个新对象,我也可以看到其他客户的项目。

假设客户可以创建将用于分配产品的组。这是在将产品创建为下拉列表(产品 View 中的多对一关系)时完成的。但我也可以看到其他客户创建的组。

我怎样才能过滤这个?我想我必须在 ProductsAdmin.php 中进行任何过滤。或者它必须发生在 ProductsRepository.php 中?到目前为止,我在文档中找不到任何提示,并且会提供任何类型的提示或链接,我可以在其中找到相关信息。

最佳答案

您需要覆盖编辑 Twig 模板或创建自定义选择框。见 this question关于覆盖。我不知道你的实体结构,但过程应该像

{% for object in objects %}
{% if owned by this user flag display %}
{{object}}
{% endif %}
{% endfor%}

管理类中的自定义选择查询,如
    $em = $this->getConfigurationPool()->getContainer()->get('doctrine.orm.entity_manager');
$user = $this->getConfigurationPool()->getContainer()->get('security.token_storage')->getToken()->getUser();
$query = $em->createQueryBuilder('p')
->select('p')
->from('MyBundle:Product', 'p')
->where('p.user = :user')
->setParameter('user', $user);

$formMapper
...
->add('categoria', 'sonata_type_model', array(
'required' => true,
'query' => $query
))

关于symfony - 在 configureFormFields 中使用 SonataAdminBundle ACL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39912641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com