小编 xtt1341 比较喜欢用 Sonata Admin,但现在也有人喜欢 Easy Admin。前者是一位编程界总大师的作品,后者是 Symfony 核心团队成员 javiereguiluz 的作品,且文档已归入 SF 官方的 bundles 体系之中。
另有不再更新的 AdmingeneratorGeneratorBundle。
其中 Sonata 是比较高端的,因此可定制性就更强,但也需要全方位的文档支持和知识线索支持,这令初学者的推进进度缓慢。而小编一开始就决定使用 Sonata Admin,而且逐渐感受到它的威力之强,绝非浪得虚名。不过,这 bundle 却不支持 User 管理——你需要安装 SonataUserBundle 来配合实现——但它却只支持 FosUserBundle 的上一代 1.3 版本。
难道我们就无法进行 User 管理了吗?当然不是。可以在 Sonata 里直接使用 User 管理。
得益于 Symfony 极为强大的 Security 体系,在处理 Role Hierarchy 时极为简便,配合 Sonata 内置的 Entity Role 系统,一切就都是可控的了。
的确几乎在所有领域,暂时不需要复杂的 Acl 操作,只要控制 Role,任何人员进到后台,角色系统直接生效,可作用到 Entity 的列表(view)、增、删、改等等。
小编已经完整实践过了,并进行了某种程度的 hack,可以说,在对 User 的掌控上,能够做到随心所欲。
hack 过程对 Symfony 的通用高级架构,更是十分服气。
可以添加带 Role 的用户,User 的字段可以随心所欲——因为这就是基于 FosUserBundle 2.0.x@dev 的。
这个 Role 分为您自己的 Role,和 Sonata 的 Entity Role。
在 security.yml 中的 Role Hierarchy 键下可以随便整,复杂程度可以直接达到诸如 Thinkphp 3 的那种 RBAC 程度。而且在 Symfony 看来那些都是非常简单就可以实现的,小编就对接并覆写过那个系统,用 Symfony。后面找机会分享一下,看看 Symfony 究竟有多么强大和灵活。
通用的 FormType 系统,一行搞定一切,但 Sonata 程序的解读需要一些经验,毕竟它的程序最是高深,可以说是 PHP 面向对象的教科书级范本。