gpt4 book ai didi

symfony - Sonata管理包,如何使用实体存储库类

转载 作者:行者123 更新时间:2023-12-01 23:23:09 25 4
gpt4 key购买 nike

  1. 在 PropertyAdmin 中使用此代码扩展 Admin:

    public function createQuery($context = 'list')
    {
    $user = $this->getConfigurationPool()->getContainer()->get('security.context')->getToken()->getUser();
    $query = $this->getModelManager()->createQuery($this->getClass(), 'o');
    $query->where('o.Creator=:creator')->setParameter("creator", $user);
    return $query;
    }

我能够将“列表”结果限制为“属于”登录管理员的用户。仅由登录管理员创建的属性(即实体)。

问题:通过手动更改 URL(id 值,如 1、2...),我可以编辑属于其他用户的属性。对于编辑操作,根本不调用上述查询。如何改变这种行为?

2.我可以从 PropertyRepository 类中获取查询,而不是将查询放入 Controller 中吗?这将保留模型中的逻辑,我可以为其编写单元测试。

3.我正在尝试:ProductAdmin 扩展了 AdminHelper {....}AdminHelper 扩展了 Admin { .... }

但它失败说“无法从“D:_development\rent2\app/config\routing.yml”导入资源“D:_development\rent2\app/config。”。

AdminHelper 是抽象类,但 Sonata 仍然读取它。有什么解决办法吗?

最佳答案

1.a) 对您的对象使用 ACL,CRUD controller有权限检查。

1.b) 重新定义编辑操作,确保用户尝试编辑属于他的属性,类似于 Page Admin Controller ,重新定义了创建操作

2) 在 Controller 中 $this->getConfigurationPool()->getContainer()->get('doctrine')->getRepository($this->getClass());使您可以访问为此模型注册的存储库。可能没有其他方法可以从中获取服务容器和实体管理器。

3) 要创建管理类,您应该扩展 Sonata Admin:docs for this ,这个问题对我来说似乎与奏鸣曲无关。您能否提供 D:_development\rent2\app/config\routing.yml 的内容?

关于symfony - Sonata管理包,如何使用实体存储库类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11330413/

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