体系结构
编辑该页面SonataAdminBundle主要是受Django管理项目,这确实是一个伟大的项目。更多的信息可以在找到Django项目网站。
如果你遵循的指令创建一个管理员现在有了一个页面,你应该管理
类和一个管理
服务。在这一章,我们将更深入讨论它是如何工作的。
管理类地图一个特定模型所提供的丰富的CRUD接口SonataAdminBundle
。换句话说,用你的管理
类,您可以配置所示SonataAdminBundle
在每个CRUD操作相关的模型。现在你已经看到3的这些行为创建一个管理员页面:列表、过滤和形式(创建/编辑)。然而,一个完全配置管理
类可以定义更多的行动:
行动
描述
列表
字段显示在列表中
过滤器
可用的字段过滤列表
形式
用于创建/编辑实体的字段
显示
用于显示实体的字段
批处理操作
操作可以在一组执行的实体(如批量删除)
行动 | 描述 |
---|---|
列表 | 字段显示在列表中 |
过滤器 | 可用的字段过滤列表 |
形式 | 用于创建/编辑实体的字段 |
显示 | 用于显示实体的字段 |
批处理操作 | 操作可以在一组执行的实体(如批量删除) |
的奏鸣曲\ AdminBundle \ Admin \ AbstractAdmin
类提供映射模型,通过扩展它。然而,任何实现的奏鸣曲\ AdminBundle \ Admin \ AdminInterface
可用于定义一个吗管理
服务。为每一个管理
自动服务,以下所需的依赖项注入的包:
类 | 描述 |
---|---|
ConfigurationPool | 配置池,所有管理类实例存储 |
ModelManager | 处理特定的代码与持久层(例如教义ORM) |
数据源 | 处理代码相关的奏鸣曲出口国 |
FormContractor | 构建的形式编辑/使用Symfony创建视图ob娱乐下载FormBuilder |
ShowBuilder | 构建显示字段 |
ListBuilder | 构建列表字段 |
DatagridBuilder | 构建过滤字段 |
请求 | 接收http请求 |
RouteBuilder | 允许您添加新操作和删除路由路线为默认的行为 |
RouterGenerator | 生成不同的url |
SecurityHandler | 处理权限模型实例和行动 |
验证器 | 处理模型验证 |
翻译 | 生成翻译 |
LabelTranslatorStrategy | 时使用的策略生成标签 |
MenuFactory | 生成的菜单,根据当前的行动 |
请注意
这些依赖项用于一个特定的任务,简要描述。如果你想了解更多关于如何使用它们,检查相应的文档章。欧宝官网下载app在大多数情况下,你不需要担心他们的底层实现。
所有这些依赖关系有默认值时,您可以重写声明你的任何管理
服务。这是通过使用一个调用
的匹配setter
:
- YAML
- XML
1 2 3 4 5 6 7
服务:app.admin.post:类:App \ Admin \ PostAdmin电话:- - - - - -[setLabelTranslatorStrategy,[“@sonata.admin.label.strategy.underscore”]]标签:- - - - - -{名称:sonata.admin,model_class:应用实体\ \,manager_type:orm,组:“内容”,标签:“职位”}
1 2 3 4 5 6
<服务id=“app.admin.post”类=“应用程序\ Admin \ PostAdmin”><调用方法=“setLabelTranslatorStrategy”><论点类型=“服务”id=“sonata.admin.label.strategy.underscore”/ >< /调用><标签的名字=“sonata.admin”model_class=“应用程序\实体\发布”manager_type=“orm”集团=“内容”标签=“职位”/ >< /服务>
在这里,我们声明一样管理
服务的创建一个管理员章,但使用不同的标签翻译策略,取代默认的一个。请注意,sonata.admin.label.strategy.underscore
提供的服务吗SonataAdminBundle
,但你可以使用你自己的服务。
CRUDController包含操作可用来操纵你的模型实例,如创建、列表、编辑或删除。它使用管理
类来确定其行为,比如哪些字段显示在编辑表单,或者如何构建列表视图。在CRUDController
,你可以访问管理
类实例通过美元的管理
变量。
请注意
CRUD是一个缩写”创建、读取、更新和删除”
的CRUDController
没有不同于其他任何Symfony控制器,这意味着所有通常的选择ob娱乐下载,像得到服务的依赖注入容器(DIC)。
这是特别有用如果你决定延长CRUDController
添加新的行为或改变现有的行为。您可以指定使用哪个控制器时宣布的管理
服务通过它作为第三个参数。例如设置控制器应用程序控制器\ \ PostAdminController
:
- YAML
- XML
1 2 3 4 5 6 7
服务:app.admin.post:类:App \ Admin \ PostAdmin电话:- - - - - -[setTranslationDomain,('软件'])标签:- - - - - -{名称:sonata.admin,model_class:应用实体\ \,控制器:应用程序控制器\ \ PostAdminController,manager_type:orm,组:“内容”,标签:“职位”}
1 2 3 4 5 6
<服务id=“app.admin.post”类=“应用程序\ Admin \ PostAdmin”><调用方法=“setTranslationDomain”><论点>应用程序< /论点>< /调用><标签的名字=“sonata.admin”model_class=“应用程序\实体\发布”控制器=“应用程序控制器\ \ PostAdminController”manager_type=“orm”集团=“内容”标签=“职位”/ >< /服务>
当扩展CRUDController
,记住,管理
类已经有一组自动注入依赖项是有用的在实现几个场景。参考现有的CRUDController
操作的例子如何得到最好的。
在你的重载CRUDController你也可以重载这些方法从SonataAdmin限制重复代码的数量:提前设定
:从createAction
preEdit
:从editAction
preDelete
:从deleteAction
preShow
:从showAction
*preList
:从listAction
这些方法被称为后检查访问权限和从数据库检索对象。您可以使用它们如果你需要在一定条件下将用户重定向到其他页面。
请注意
CRUD是一个缩写”创建、读取、更新和删除”
CRUDController
没有不同于其他任何Symfony控制器,这意味着所有通常的选择ob娱乐下载,像得到服务的依赖注入容器(DIC)。CRUDController
添加新的行为或改变现有的行为。您可以指定使用哪个控制器时宣布的管理
服务通过它作为第三个参数。例如设置控制器应用程序控制器\ \ PostAdminController
:- YAML
- XML
1 2 3 4 5 6 7
服务:app.admin.post:类:App \ Admin \ PostAdmin电话:- - - - - -[setTranslationDomain,('软件'])标签:- - - - - -{名称:sonata.admin,model_class:应用实体\ \,控制器:应用程序控制器\ \ PostAdminController,manager_type:orm,组:“内容”,标签:“职位”}
1 2 3 4 5 6
<服务id=“app.admin.post”类=“应用程序\ Admin \ PostAdmin”><调用方法=“setTranslationDomain”><论点>应用程序< /论点>< /调用><标签的名字=“sonata.admin”model_class=“应用程序\实体\发布”控制器=“应用程序控制器\ \ PostAdminController”manager_type=“orm”集团=“内容”标签=“职位”/ >< /服务>
CRUDController
,记住,管理
类已经有一组自动注入依赖项是有用的在实现几个场景。参考现有的CRUDController
操作的例子如何得到最好的。提前设定
:从createAction
preEdit
:从editAction
preDelete
:从deleteAction
preShow
:从showAction
*preList
:从listAction
CRUDController操作使用视图文件渲染输出。SonataAdminBundle
提供了准备使用视图以及定制它们的方法。
当前的实现使用嫩枝
模板引擎。所有模板都位于资源/观点
包的目录。
有两个基础模板,其中之一就是最终用于每一个行动:
@SonataAdmin / standard_layout.html.twig
@SonataAdmin / ajax_layout.html.twig
就像名字说的,一个如果标准调用,另一个用于AJAX。
的子文件夹包括树枝文件的特定部分SonataAdminBundle
:
-
布洛克:
-
SonataBlockBundle
块的观点。默认情况下,只有一个,它显示仪表盘上的所有映射的类
-
按钮:
-
按钮,如
添加新
或删除
你可以看到在几个CRUD操作
-
杂质:
-
基本观点为每一个CRUD操作,为每个字段类型+几个字段视图
-
形式:
-
相关视图形式呈现
-
助手:
-
一个视图提供一个简短的描述对象,提供特定的表单字段类型的一部分
SonataAdminBundle
-
寻呼机:
-
分页相关的视图文件
这些将在具体进行更详细的讨论模板节,你还会发现说明如何配置SonataAdminBundle
使用你的模板,而不是默认的。
嫩枝
模板引擎。所有模板都位于资源/观点
包的目录。@SonataAdmin / standard_layout.html.twig
@SonataAdmin / ajax_layout.html.twig
SonataAdminBundle
:SonataBlockBundle
块的观点。默认情况下,只有一个,它显示仪表盘上的所有映射的类添加新
或删除
你可以看到在几个CRUD操作SonataAdminBundle
SonataAdminBundle
使用你的模板,而不是默认的。管理服务
你的管理
服务定义解析Symfony加载时,处理的ob娱乐下载池
类。这个类,可用sonata.admin.pool
服务从DIC,处理管理
类、延迟加载在需求(减少开销)和匹配他们每个人一组。它还负责处理顶层模板文件,管理面板标题和标志。