获取 Doctrine 实体列表(UI 人口、访问权限等)
Posted
技术标签:
【中文标题】获取 Doctrine 实体列表(UI 人口、访问权限等)【英文标题】:Getting a list of Doctrine Entities (UI population, access rights, etc.) 【发布时间】:2015-03-03 15:29:29 【问题描述】:我正在尝试了解 Doctrine Entity 及其继承模型。这是我想要一些建议的情况;我有一个基类Box
,根据应用,其他几个类可以扩展Box
类(STI),例如:TextBox
、ImageBox
、SliderBox
等PortraitBox
可以扩展ImageBox
,等等。
获取扩展Box
的所有类的列表(以自动方式)的最佳方法是什么?例如,如果应用的用户需要选择创建哪个 Box,或者管理员需要选择所有应该对某些用户可编辑的 Box,等等。
在 UI 填充的情况下,是否可以使用类名填充 UI 元素?
【问题讨论】:
【参考方案1】:我建议您在配置文件中定义所有可能的值。这样您就不必实施复杂的自动发现,一旦需求发生变化就会失败,您甚至可以提供额外的信息。考虑这个例子:
boxes.yml
boxes:
text:
class: "My\FQCN\To\TextBox"
displayName: "Text Box"
editableBy: ["admin", "editor"]
image:
class: "My\FQCN\To\ImageBox"
displayName: "Image Box"
editableBy: ["admin", "photographer"]
...
现在,您只需要实现域逻辑,以便您的应用程序理解配置文件。并且不要忘记在某处记录不同的配置可能性。
如果您需要动态访问控制,很好:使用二级标识符(例如text
或image
)作为键来识别数据库中的框并分配权限。这些是唯一的内部名称,与 UI 和实际实现无关。
【讨论】:
感谢@FaKeller 的想法。阅读您的回答让我想到了如何在添加新框类型时使用控制台命令自动执行此操作。以上是关于获取 Doctrine 实体列表(UI 人口、访问权限等)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Symfony 2.1 从内部控制器获取 Doctrine 实体的实体管理器
如何使用symfony获取Doctrine实体持久集合数据值
使用 Doctrine ORM ManyToOne 关系在相反方向获取实体