自定义管理
编辑该页面自定义管理
扩展
管理扩展允许您添加或更改特性的一个或多个管理实例。创建一个扩展您的类必须实现的接口SonataAdminBundleAdminAdminExtensionInterface并注册为一个服务。接口定义了大量的功能,您可以使用自定义编辑形式,列表视图,表单验证、改变新创建的对象和其他管理功能。
提示
因为大多数类的奏鸣曲最后,“扩展”是一种简单的方法来定制管理员奏鸣曲中创建的代码。
作为一个例子,假设我们要定制PageAdmin
,添加位置
字段到管理页面,这是声明为adminsonata.page.admin.page
1 2 3 4 5 6 7 8 9 10 11 12 13 14
名称空间应用程序\管理\扩展;使用奏鸣曲\AdminBundle\管理\AbstractAdminExtension;使用奏鸣曲\AdminBundle\形式\FormMapper;使用ob娱乐下载\组件\DependencyInjection\属性\AutoconfigureTag;# [AutoconfigureTag(名字:“sonata.admin。扩展的属性:['目标' = > ' sonata.page.admin.page '])最后类PositionAdminExtension扩展AbstractAdminExtension{公共函数configureFormFields(FormMapper美元形式):无效{美元形式- >add (“位置”);}}
正如你所看到的位置字段添加到管理页!
提示
如果你想将字段添加到现有的组你可以查看表单视图
提示
如果你想重新排序字段检查重新排序字段
请注意
了解更多关于如何配置服务标签使用的信息yaml,xml或php文件检查ob娱乐下载Symfony标记文档
支持的属性sonata.admin.extension
标签
属性名称 | 描述 |
---|---|
目标 | 管理员服务的名称,你想定制,如果你使用全球属性是真正的,你不需要通过它。 |
全球 | 添加扩展到所有管理员。 |
不包括 | 指定一个或多个管理服务id的扩展不应该被添加(这将防止它匹配任何其他设置)。 |
扩展 | 指定一个或多个类。如果管理员的管理类扩展的一个指定的类扩展将被添加到管理。 |
实现了 | 指定一个或多个接口。如果管理员的管理类实现一个接口扩展将被添加到指定的管理员。 |
运算符 | 指定一个或多个类。如果管理员的管理类扩展的一个指定的类或类的一个实例的扩展将被添加到管理。 |
使用 | 指定一个或多个特征。如果管理员的管理类使用一个指定特征的扩展将被添加到管理。 |
admin_extends | 指定一个或多个类。如果管理扩展的类的一个特定类的扩展将被添加到管理。 |
admin_implements | 指定一个或多个接口。如果类的管理实现一个接口扩展将被添加到指定的管理员。 |
admin_instanceof | 指定一个或多个类。如果管理扩展的类的一个指定的类或类的一个实例的扩展将被添加到管理。 |
admin_uses | 指定一个或多个特征。如果管理员使用的类的一个特性扩展将被添加到指定的管理员。 |
优先级 | 可以是正的或负的整数。优先级越高,越早被处决。 |
配置扩展在奏鸣曲配置
这是另一种方式来配置管理扩展,以防你不想使用服务标记,它定义在你的sonata_admin配置
1 2 3 4 5 6 7
#配置/包/ sonata_admin.yamlsonata_admin:扩展:app.publish.extension:管理员:- - - - - -App \ Admin \ \ PositionAdminExtension延伸
属性名称 | 描述 |
---|---|
全球 | 添加扩展到所有管理员。 |
管理员 | 指定一个或多个管理服务扩展应该添加id。 |
不包括 | 指定一个或多个管理服务id的扩展不应该被添加(这将防止它匹配任何其他设置)。 |
扩展 | 指定一个或多个类。如果管理员的管理类扩展的一个指定的类扩展将被添加到管理。 |
实现了 | 指定一个或多个接口。如果管理员的管理类实现一个接口扩展将被添加到指定的管理员。 |
运算符 | 指定一个或多个类。如果管理员的管理类扩展的一个指定的类或类的一个实例的扩展将被添加到管理。 |
使用 | 指定一个或多个特征。如果管理员的管理类使用一个指定特征的扩展将被添加到管理。 |
admin_extends | 指定一个或多个类。如果管理扩展的类的一个特定类的扩展将被添加到管理。 |
admin_implements | 指定一个或多个接口。如果类的管理实现一个接口扩展将被添加到指定的管理员。 |
admin_instanceof | 指定一个或多个类。如果管理扩展的类的一个指定的类或类的一个实例的扩展将被添加到管理。 |
admin_uses | 指定一个或多个特征。如果管理员使用的类的一个特性扩展将被添加到指定的管理员。 |
优先级 | 可以是正的或负的整数。优先级越高,越早被处决。 |
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
#配置/包/ sonata_admin.yamlsonata_admin:扩展:app.publish.extension:全球:真正的管理员:- - - - - -app.admin.article实现:- - - - - -应用\ \ PublishStatusInterface发布不包括:- - - - - -app.admin.blog- - - - - -app.admin.欧宝平台是合法的吗news扩展:- - - - - -应用程序文档\ \博客运算符:- - - - - -应用程序文档\ \页面用途:- - - - - -应用\ \ Timestampable特征admin_implements:- - - - - -App \ Admin \ PublishableAdminInterfaceadmin_extends:- - - - - -App \ Admin \ AbstractAdminadmin_instanceof:- - - - - -App \ Admin \ MediaAdminadmin_uses:- - - - - -应用\ \ Loggable特征
如果这些选项不能满足你的需求,你仍然可以动态添加/删除一个扩展AdminInterface:配置()的方法,你的管理方法“addExtension”和“removeExtension”:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
使用应用程序\AdminExtension\PublishStatusAdminExtension;使用奏鸣曲\AdminBundle\管理\AbstractAdmin;最后类PublishStatusAdmin扩展AbstractAdmin{受保护的函数配置():无效{/ /……如果(美元someCondition){美元这- >addExtension (新PublishStatusAdminExtension ());}}}
重新排序字段
有时你想重新排序的字段添加扩展。方法通过SonataAdminBundleAdminAdminInterfaceMapperInterface或SonataBlockBundleFormMapperFormMapper您可以使用作为参数重新排序
方法
如果您想重新排序的字段表单视图,你可以这样做:
1 2 3 4 5 6 7 8 9 10 11 12
公共函数configureFormFields(FormMapper美元形式):无效{美元形式- >(“主要”)- >重新排序([“url”,“位置”])- >add (“位置”)- >结束();}
在这种情况下,将进入位置字段主要组,后url场