模板
编辑该页面模板
SonataAdminBundle
伴随着大量的嫩枝
每个文件用于显示的不同部分管理
行动的页面。如果你读了模板
的一部分体系结构本指南的部分,你应该知道现在这些是如何组织的的观点
文件夹中。如果你还没有,现在是一个很好的时间去做它。
除了这些,包括一些其他视图文件存储层。作为他们的内容和结构是特定于每个实现,他们这里不讨论,但重要的是你要记住他们的存在,也包括直接在视图文件SonataAdminBundle
。
全球模板
SonataAdminBundle
实现视图使用嫩枝
文件,并充分利用它的继承能力。因此,即使是最简单的页面实际上是使用许多不同的呈现嫩枝
文件。结束的时候嫩枝
继承层次结构总是两个文件之一:
- 布局:@SonataAdmin / standard_layout.html.twig
- ajax: @SonataAdmin / ajax_layout.html.twig
您可能已经猜到的名字,第一个是用在“标准”请求,另一个用于AJAX调用。的@SonataAdmin / standard_layout.html.twig
在整个页面包含几个元素存在,商标、标题、菜单和菜单。它还包括基本的CSS和JavaScript文件和库在整个管理部门使用。AJAX模板不包括这些元素。
CRUDController行为模板
正如之前所看到的,CRUDController
有几个动作让你操作你的模型实例。每个操作使用一个特定的模板文件来呈现其内容。默认情况下,SonataAdminBundle
使用以下模板匹配的行动:
列表
:@SonataAdmin / CRUD / list.html.twig显示
:@SonataAdmin / CRUD / show.html.twig编辑
:@SonataAdmin / CRUD / edit.html.twig历史
:@SonataAdmin / CRUD / history.html.twig预览
:@SonataAdmin / CRUD / preview.html.twig删除
:@SonataAdmin / CRUD / delete.html.twigbatch_confirmation
:@SonataAdmin / CRUD / batch_confirmation.html.twigacl
:@SonataAdmin / CRUD / acl.html.twig
请注意,所有这些模板扩展其他模板和一些只做。这种继承架构旨在帮助你定制扩展这些模板在你自己的包,而不是重写一切。
如果你仔细看,所有这些最终模板扩展base_template
的变量从控制器。这个变量的值总是将上述全球模板之一,这是更改这些文件如何影响所有的SonataAdminBundle
接口。
其他模板
有几个其他可定制的模板,使您可以微调SonataAdminBundle
:
user_block
默认:定制树枝块呈现在管理界面的右上角,包含用户信息。空在默认情况下,明白了SonataUserBundle
一个真实的例子。add_block
默认:定制树枝块呈现在管理界面的右上角,提供快速访问创建可用的操作管理类。history_revision_timestamp:
定制时间戳的方式呈现在使用历史相关的行动。行动
:您可以使用一个通用的模板为您的自定义操作short_object_description
所使用的:getShortObjectDescriptionAction
行动的HelperController
这个模板将显示一个小模型实例的描述。list_block
:模板用于呈现仪表板管理映射列表。更多的信息指示板页面。- 批处理:模板用于呈现之前的复选框每个实例列表视图。
选择
:当加载列表视图作为sonata_admin形式类型的一部分,这个模板用于创建一个按钮,允许您选择匹配的行。pager_links
:最后呈现的页面列表显示的列表视图(当存在超过一页)pager_results
:显示下拉,让你选择每个页面的元素数量在列表视图
配置模板
这个模板结构的主要目标是使它舒适的为你定制你需要的。您可以扩展的你想要在自己的包,并告诉SonataAdminBundle
使用你的模板,而不是默认的。你可以在几个方面。
你可以指定模板的配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
#配置/包/ sonata_admin.yamlsonata_admin:模板:布局:“@SonataAdmin / standard_layout.html.twig”ajax:“@SonataAdmin / ajax_layout.html.twig”列表:“@SonataAdmin / CRUD / list.html.twig”显示:“@SonataAdmin / CRUD / show.html.twig”show_compare:“@SonataAdmin / CRUD / show_compare.html.twig”编辑:“@SonataAdmin / CRUD / edit.html.twig”历史:“@SonataAdmin / CRUD / history.html.twig”预览:“@SonataAdmin / CRUD / preview.html.twig”删除:“@SonataAdmin / CRUD / delete.html.twig”批处理:“@SonataAdmin / CRUD / list__batch.html.twig”acl:“@SonataAdmin / CRUD / acl.html.twig”行动:“@SonataAdmin / CRUD / action.html.twig”选择:“@SonataAdmin / CRUD / list__select.html.twig”过滤器:“@SonataAdmin /形式/ filter_admin_fields.html.twig”指示板:“@SonataAdmin /核心/ dashboard.html.twig”搜索:“@SonataAdmin /核心/ search.html.twig”batch_confirmation:“@SonataAdmin / CRUD / batch_confirmation.html.twig”inner_list_row:“@SonataAdmin / CRUD / list_inner_row.html.twig”base_list_field:“@SonataAdmin / CRUD / base_list_field.html.twig”list_block:“@SonataAdmin /块/ block_admin_list.html.twig”user_block:“@SonataAdmin /核心/ user_block.html.twig”add_block:“@SonataAdmin /核心/ add_block.html.twig”pager_links:“@SonataAdmin /寻呼机/ links.html.twig”pager_results:“@SonataAdmin /寻呼机/ results.html.twig”tab_menu_template:“@SonataAdmin /核心/ tab_menu_template.html.twig”history_revision_timestamp:“@SonataAdmin / CRUD / history_revision_timestamp.html.twig”short_object_description:“@SonataAdmin /帮助/ short-object-description.html.twig”search_result_block:“@SonataAdmin /块/ block_search_result.html.twig”action_create:“@SonataAdmin / CRUD / dashboard__action_create.html.twig”button_acl:“@SonataAdmin /按钮/ acl_button.html.twig 'button_create:“@SonataAdmin /按钮/ create_button.html.twig 'button_edit:“@SonataAdmin /按钮/ edit_button.html.twig 'button_history:“@SonataAdmin /按钮/ history_button.html.twig 'button_list:“@SonataAdmin /按钮/ list_button.html.twig 'button_show:“@SonataAdmin /按钮/ show_button.html.twig 'form_theme:[]filter_theme:[]
警告
请注意,这是一个全球变化,这意味着它将会影响所有模型自动映射,对管理
映射定义为您和其他包。
如果你愿意,你可以在每个指定自定义的模板管理
映射的基础。在内部,CRUDController
获取这些信息的TemplateRegistry
所属的类实例管理
,所以您可以指定要使用的模板管理
服务的定义:
1 2 3 4 5 6 7 8 9
#配置/ services.yaml服务:app.admin.post:类:App \ Admin \ PostAdmin电话:- - - - - -[setTemplate,(“编辑”,“PostAdmin / edit.html.twig”]]标签:- - - - - -{名称:sonata.admin,model_class:应用实体\ \,manager_type:orm,组:“内容”,标签:“职位”}
请注意
一个settemplate(数组模板美元)
(注意复数)方法也存在,允许你设置多个模板。
更改使用setTemplate ()
和settemplate ()
方法覆盖自定义在配置文件中,所以您可以指定一个全局自定义模板,然后覆盖在一个特定的定制管理
类。
找到配置模板
每一个管理
有一个TemplateRegistry
服务连接到它,通过上面的配置模板注册。通过该方法getTemplate(名称)
的类,您可以访问模板集管理
。的TemplateRegistry
可以通过$ this - > getTemplateRegistry ()
在管理
。使用服务容器模板注册可以外部访问管理
。使用管理
代码+.template_registry
(即作为服务ID。“app.admin。“使用模板注册“app.admin.post.template_registry”)。
的TemplateRegistry
服务,拥有全球模板可以使用服务ID访问“sonata.admin.global_template_registry”。
在树枝的模板,您可以使用get_admin_template(名称、adminCode美元)
函数来访问当前的模板管理
,或者是get_global_template(名称)
函数来访问全局模板。
1 2 3 4 5
{%扩展get_admin_template (base_list_field, admin.code) %}{%块场%}{#……#}{%endblock%}