字段
编辑本页字段
字段允许显示您的Doctrine实体的内容CRUD页面.EasyAdmin提供了内置字段来显示所有常用数据类型,但您也可以这样做创建自己的字段.
配置显示字段
如果你的CRUD控制器从AbstractCrudController
由EasyAdmin提供,字段自动配置。在指数
在页面中,您将看到一些字段,在其余的页面中,您将看到尽可能多的字段,以显示Doctrine实体的所有属性。
实现configureFields ()
方法自定义要显示的字段列表:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
名称空间应用程序\控制器\管理;使用应用程序\实体\产品;使用EasyCorp\包\EasyAdminBundle\控制器\AbstractCrudController;类ProductCrudController扩展AbstractCrudController{公共静态函数getEntityFqcn():字符串{返回产品::类;}公共函数configureFields(字符串$pageName):可迭代的{/ /……}/ /……}
有几种方法可以定义要显示的字段列表。
选项1。返回带有要显示的属性名称的字符串。EasyAdmin自动为他们创建字段,并应用默认的配置选项:
1 2 3 4 5 6 7 8 9 10
公共函数configureFields(字符串$pageName):可迭代的{返回(“标题”,“描述”,“价格”,“股票”,“publishedAt”,);}
第二个选项。返回场
为Doctrine实体属性创建的对象。EasyAdmin转换这些泛型场
对象转换为用于显示每种类型属性的特定对象:
12 3 4 5 6 7 8 9 10 11 12
使用EasyCorp\包\EasyAdminBundle\场\场;公共函数configureFields(字符串$pageName):可迭代的{返回(字段::新(“标题”),现场::新(“描述”),现场::新(“价格”),现场::新(“股票”),现场::新(“publishedAt”),);}
选项3。返回适当的字段对象来显示每个属性:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用EasyCorp\包\EasyAdminBundle\场\DateTimeField;使用EasyCorp\包\EasyAdminBundle\场\IntegerField;使用EasyCorp\包\EasyAdminBundle\场\MoneyField;使用EasyCorp\包\EasyAdminBundle\场\TextEditorField;使用EasyCorp\包\EasyAdminBundle\场\文本框;公共函数configureFields(字符串$pageName):可迭代的{返回(文本框::新(“标题”), TextEditorField::新(“描述”), MoneyField::新(“价格”)->setCurrency (“欧元”), IntegerField::新(“股票”), DateTimeField::新(“publishedAt”),);}
字段构造函数的唯一强制参数是由该字段管理的Doctrine实体属性的名称。EasyAdmin使用PropertyAccess组件为了获得属性的值,实体可以将它们的访问定义为公共属性(例如;公共firstName美元
)或公共方法(例如:getFirstName()
,公共函数firstName()
).
请注意
EasyAdmin使用Symf欧宝娱乐app下载地址ony Forms创建和编辑Doctrine实体。这就是为什么所有实体属性都必须为空:它们的setter需要接受零
值及其getter必须被允许返回零
.在数据库中,相关的字段不一定是可空的。
地图上未标明的字段
字段通常引用相关教义实体的属性。但是,它们也可以引用与任何属性都没有关联的实体的方法。例如,如果你客户
实体定义firstName
而且姓
属性时,您可能希望显示两个值合并的“全名”字段。
为此,向实体添加以下方法:
12 3 4 5 6 7 8 9 10 11 12
使用学说\ORM\映射作为ORM;/**@ORM实体\ * /类客户{/ /……公共函数getFullName(){返回$这->getFirstName()。' '.$这->getLastName ();}}
现在,添加一个fullName
指向这个的字段getFullName ()
方法。字段名和方法之间的转换必须遵守PropertyAccess组件(如。foo_bar
->getFooBar ()
或fooBar ()
):
1 2 3 4 5 6 7
公共函数configureFields(字符串$pageName):可迭代的{返回(文本框::新(“fullName”),/ /……];}
注意未映射字段不合适的因为它们不作为数据库表列存在,所以不能包含在Doctrine查询中。在某些情况下,您可以自己通过使用SQL计算未映射的字段内容来克服这一限制。要做到这一点,请重写createIndexQueryBuilder ()
使用的方法CRUD控制器:
12 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
名称空间应用程序\控制器\管理;使用EasyCorp\包\EasyAdminBundle\配置\Crud;使用EasyCorp\包\EasyAdminBundle\控制器\AbstractCrudController;类UserCrudController扩展AbstractCrudController{/ /……公共函数configureFields(字符串$pageName):可迭代的{返回(文本框::新(“fullName”),/ /……];}公共函数createIndexQueryBuilder(SearchDto$searchDto, EntityDto$entityDto, FieldCollection$字段, FilterCollection$过滤器):QueryBuilder{$queryBuilder=父::createIndexQueryBuilder ($searchDto,$entityDto,$字段,$过滤器);//如果未设置用户定义排序如果(0= = = count ($searchDto->getSort ())) {$queryBuilder->addSelect (CONCAT(实体。first_name, \' \', entity.last_name) AS HIDDEN full_name')->addOrderBy (“full_name”,“DESC”);}返回$queryBuilder;}}
每页显示不同的字段
有几个方法可以根据当前页面有条件地显示字段:
1 2 3 4 5 6 7 8 9 10 11
公共函数configureFields(字符串$pageName):可迭代的{返回[IdField::新(“id”)->hideOnForm(),文本框::新(“firstName”),文本框::新(“姓”),文本框::新(“电话”), EmailField::新(“电子邮件”)->DateTimeField hideOnIndex ()::新(“createdAt”)->onlyOnDetail ()];}
这些是所有可用的方法:
hideOnIndex ()
hideOnDetail ()
hideOnForm ()
(将字段都隐藏在编辑
而且新
页)hideWhenCreating ()
hideWhenUpdating ()
onlyOnIndex ()
onlyOnDetail ()
onlyOnForms ()
(隐藏除。以外的所有页面中的字段编辑
而且新
)onlyWhenCreating ()
onlyWhenUpdating ()
如果每个页面上要显示的字段完全不同,则使用给定的字段pageName美元
区分它们的参数:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
使用EasyCorp\包\EasyAdminBundle\配置\Crud;公共函数configureFields(字符串$pageName):可迭代的{$id= IdField::新(“id”);$firstName=文本框::新(“firstName”);$姓=文本框::新(“姓”);$电话=文本框::新(“电话”);$电子邮件= EmailField::新(“电子邮件”);$createdAt= DateTimeField::新(“createdAt”);如果(Crud::PAGE_INDEX = = =$pageName){返回($id,$firstName,$姓,$电话];}elseif(Crud::PAGE_DETAIL = = =$pageName){返回(“…'];}其他的{返回(“…'];}}
如果您需要更大的控制,请考虑使用以下定义字段的方法PHP发电机:
12 3 4 5 6 7 8 9 10 11 12 13
公共函数configureFields(字符串$pageName):可迭代的{收益率IdField::新(“id”)->hideOnForm ();如果(“…某种表情……”){收益率文本框::新(“firstName”);收益率文本框::新(“姓”);}收益率文本框::新(“电话”);收益率EmailField::新(“电子邮件”)->hideOnIndex ();收益率DateTimeField::新(“createdAt”)->onlyOnDetail ();}
现场布局
表格的行
默认情况下,EasyAdmin每行显示一个表单字段。在行中,每个字段类型使用不同的默认宽度(例如,整数字段是窄的,代码编辑器字段是非常宽的)。方法重写此行为setColumns ()
每个字段的方法。
在使用此选项之前,您必须熟悉自举网格系统,它将每行分成12个相同宽度的列引导断点,分别是xs
(设备宽度< 576px),sm
(> = 576 px),医学博士
(> = 768 px),lg
(> = 992 px),xl
(>= 1,200px)和xxl)
(> = 1400 px)。
假设您希望显示两个名为startsAt
而且endsAt
在同一行上,每一个向量都包含本行的6列。这是你如何配置布局:
1 2 3 4 5 6 7 8 9 10 11
使用EasyCorp\包\EasyAdminBundle\场\DateTimeField;公共函数configureFields(字符串$pageName):可迭代的{返回(/ /…DateTimeField::新(“startsAt”)->setColumns (6), DateTimeField::新(“endsAt”)->setColumns (6),);}
这个例子在同一行上显示两个字段,除了xs
而且sm
断点,其中每个字段占用整个行(因为设备宽度太小)。
如果你需要根据设备宽度更好地控制设计,你可以通过响应式CSS类来传递一个字符串,这些类定义了不同断点上字段的宽度:
1 2 3 4 5 6 7 8 9 10 11
使用EasyCorp\包\EasyAdminBundle\场\DateTimeField;公共函数configureFields(字符串$pageName):可迭代的{返回(/ /…DateTimeField::新(“startsAt”)->setColumns ('col-sm-6 col-lg-5 col-xxl-3'), DateTimeField::新(“endsAt”)->setColumns ('col-sm-6 col-lg-5 col-xxl-3'),);}
这个例子添加了col-sm-6
,覆盖默认的EasyAdmin行为,并在同一行中显示这两个字段sm
断点。此外,它还减少了较大断点中的列数(lg
而且xxl)
)来改善这些字段的呈现。
提示
你也可以使用与重排序和偏移相关的CSS类:
1
收益率DateTimeField::新(“endsAt”)->setColumns ('col-sm-6 col-xxl-3 offset-lg-1 order-3');
由于Bootstrap网格的工作方式,当手动配置字段列时,每一行将包含尽可能多的字段。如果一个字段有4列,下一个字段有3列,那么行仍然有12 - 4 - 3 = 5
列来呈现其他字段。如果下一个字段的列数超过5列,则在下一行上呈现。
有时您需要更好地控制这种自动布局。例如,您可能希望在同一行上显示两个或多个字段,并确保该行上没有显示其他字段,即使有足够的空间。要做到这一点,请使用addRow ()
特殊方法FormField
字段强制创建新行(下一个字段将强制呈现在新行上):
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21
使用EasyCorp\包\EasyAdminBundle\场\BooleanField;使用EasyCorp\包\EasyAdminBundle\场\DateTimeField;使用EasyCorp\包\EasyAdminBundle\场\FormField;公共函数configureFields(字符串$pageName):可迭代的{返回(/ /…DateTimeField::新(“startsAt”)->setColumns ('col-sm-6 col-lg-5 col-xxl-3'), DateTimeField::新(“endsAt”)->setColumns ('col-sm-6 col-lg-5 col-xxl-3'), FormField::addRow (),//您可以传递断点的名称,以仅在特定宽度上添加行/ / FormField: addRow (xl),//该字段总是在它自己的行上呈现,即使有//在前一行的' lg ', ' xl '和' xxl '断点中有足够的空间BooleanField::新(“发布”)->setColumns (2),);}
板形式
在显示大量字段的页面中,可以使用特殊属性创建的“面板”将它们分组FormField
对象:
12 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
使用EasyCorp\包\EasyAdminBundle\场\FormField;公共函数configureFields(字符串$pageName):可迭代的{返回[IdField::新(“id”)->hideOnForm (),//面板通常只显示标题FormField::addPanel (“用户详细信息”),文本框::新(“firstName”),文本框::新(“姓”),//没有标题的面板仅在字段之间显示分隔FormField::DateTimeField addPanel ()::新(“createdAt”)->onlyOnDetail (),//面板也可以定义他们的图标,CSS类和帮助信息FormField::addPanel (“联系信息”)->setIcon (“电话”)->addCssClass (“可选的”)->setHelp (“电话号码优先”),文本框::新(“电话”),文本框::新(“电子邮件”)->hideOnIndex (),//面板也可以折叠(如果你的表单很长,很有用)//这使面板可折叠,但默认情况下呈现展开FormField::addPanel (“联系信息”)->可折叠的(),//这将使面板可折叠,并在默认情况下使其折叠FormField::addPanel (“联系信息”)->renderCollapsed ()];}
表单标签
在显示大量字段的页面中,您可以使用特殊属性创建的“tabs”将它们划分为选项卡FormField
对象:
12 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
使用EasyCorp\包\EasyAdminBundle\场\FormField;公共函数configureFields(字符串$pageName):可迭代的{返回[IdField::新(“id”)->hideOnForm (),//添加一个标签FormField::addTab (第一个选项卡的),//你可以在表单标签中使用表单面板FormField::addPanel (“用户详细信息”),//你的字段文本框::新(“firstName”),文本框::新(“姓”),//添加第二个表单标签//标签也可以定义他们的图标,CSS类和帮助信息FormField::addTab (“联系方式标签”)->setIcon (“电话”)->addCssClass (“可选的”)->setHelp (“电话号码优先”),文本框::新(“电话”),);}
字段类型
这些都是EasyAdmin提供的内置字段:
- ArrayField
- AssociationField
- AvatarField
- BooleanField
- ChoiceField
- CodeEditorField
- CollectionField
- ColorField
- CountryField
- CurrencyField
- DateField
- DateTimeField
- EmailField
- HiddenField
- IdField
- ImageField
- IntegerField
- LanguageField
- LocaleField
- MoneyField
- NumberField
- PercentField
- SlugField
- TelephoneField
- TextareaField
- TextEditorField
- 文本框
- TimeField
- TimezoneField
- UrlField
Doctrine类型和EasyAdmin字段之间的映射
下表显示了推荐使用的EasyAdmin字段,具体取决于DBAL类型您的实体属性:
主义类型 | EasyAdmin推荐字段 |
---|---|
数组 |
ArrayField |
ascii_string |
文本框 |
长整型数字 |
文本框 |
二进制 |
(不支持) |
团 |
(不支持) |
布尔 |
BooleanField |
date_immutable |
DateField |
日期 |
DateField |
datetime_immutable |
DateTimeField |
datetime |
DateTimeField |
datetimetz_immutable |
DateTimeField |
datetimetz |
DateTimeField |
datetinterval |
文本框 |
小数 |
NumberField |
浮动 |
NumberField |
guid |
文本框 |
整数 |
IntegerField |
json_array |
ArrayField |
json |
文本框 ,TextareaField ,CodeEditorField |
对象 |
文本框 ,TextareaField ,CodeEditorField |
simple_array |
ArrayField |
短整型 |
IntegerField |
字符串 |
文本框 |
文本 |
TextareaField ,TextEditorField ,CodeEditorField |
time_immutable |
TimeField |
时间 |
TimeField |
除此之外,EasyAdmin还为特定的值包含了其他字段类型:
AvatarField
,ColorField
,CountryField
,CurrencyField
,EmailField
,IdField
,ImageField
,LanguageField
,LocaleField
,SlugField
,TelephoneField
,TimezoneField
而且UrlField
与Doctrine的工作很好字符串
类型。MoneyField
而且PercentField
与Doctrine的工作很好小数
,浮动
而且整数
,这取决于您如何存储数据。AssociationField
,CollectionField
而且ChoiceField
是否与Symfony的字段相对应欧宝娱乐app下载地址EntityType
,CollectionType
而且ChoiceType
分别。
字段配置
本节显示所有字段类型可用的配置选项。此外,一些字段定义了额外的配置选项,如字段引用.
标签选项
字段构造函数的第二个可选参数是label:
1 2 3 4 5 6 7 8 9 10
//不显式定义标签或将其设置为NULL意味着//标签是自动生成的(例如:'firstName' -> '名字')文本框::新(“firstName”),文本框::新(“firstName”,零),//明确地设置标签以显示该标签文本框::新(“firstName”,“名字”),//设置标签为FALSE,不显示该字段的任何标签文本框::新(“firstName”,假),
设计选项
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21
文本框::新(“firstName”,“名字”)//如果你的字段需要一个特定的表单主题来正确呈现,使用这个方法->addFormTheme (“@FOSCKEditor /形式/ ckeditor_widget.html.twig”)//您可以使用相同的方法添加多个表单主题->addFormTheme (“theme1.html.twig”,“theme2.html.twig”,“theme3.html.twig”)// CSS类/类应用于字段内容(在'index'页面)//或到包装内容的行(在'detail', 'edit'和'new'页面中)//使用此方法为EasyAdmin应用的类添加新类->addCssClass (“文字大一些文本加粗的)//如果你想删除任何由EasyAdmin添加的CSS类,使用这个方法->setCssClass (“文字大一些文本加粗的)//这定义了用于在'index'和'detail'页面中呈现该字段的Twig模板//(这不会在'edit'/'new'页面中使用,因为他们使用Symfony Forms主题)欧宝娱乐app下载地址->setTemplatePath (“管理/字段/ my_template.html.twig”)//用于右对齐数字/货币值(此设置在' details '页面中被忽略)->setTextAlign (“对”);
类似于CRUD设计选项,字段还可以加载CSS文件、Javascript文件和Webpack Encore条目,并将HTML内容添加到< >头
和/或<身体>
后台页面的元素:
1 2 3 4 5 6 7
文本框::新(“firstName”,“名字”)->addCssFiles (“包/某些包/ foo.css”,“some-custom-styles.css”)->addJsFiles (“管理/ some-custom-code.js”)->addWebpackEncoreEntry (“admin-maps”)->addHtmlContentToHead ('')->addHtmlContentToBody (“< !——生成于'.time()。“- >”);
默认情况下,这些web资产加载在所有后端页面。如果需要更精确的控制,请使用资产
类来定义资产:
1 2 3 4 5 6 7 8 9 10
使用EasyCorp\包\EasyAdminBundle\配置\资产;/ /……文本框::新(“firstName”,“名字”)->addCssFiles(资产::新(“包/某些包/ foo.css”)->ignoreOnForms ()->htmlAttr (“媒体”,“打印”))->addJsFiles(资产::新(“管理/ some-custom-code.js”)->onlyOnIndex ()->推迟())->addWebpackEncoreEntry(资产::新(“admin-maps”)->onlyWhenCreating ()->预加载())//您甚至可以定义资产所属的Symfony Asset欧宝娱乐app下载地址包->addCssFiles(资产::新(“一些路径/ bar.css”)->包(“legacy_assets”));
格式化选项
的formatValue ()
方法允许在对象中呈现值之前应用一个PHP可调用对象指数
而且细节
页:
12 3 4 5 6 7 8 9 10 11 12 13 14 15
IntegerField::新(“股票”,“股票”)//回调函数通常只接受当前值作为参数->formatValue (函数($价值){返回$价值<10?sprintf ('%d **低股票**',$价值):$价值;});TextEditorField::新(“描述”)// callables还接收整个实体实例作为第二个参数->formatValue (函数($价值,$实体){返回$实体->发表()?$价值:“快到了……”;});//在PHP 7.4和更新版本中,你可以使用箭头函数// ->formatValue(fn ($value) => $value < 10 ?sprintf('%d **LOW STOCK**', $value): $value);// ->formatValue(fn ($value, $entity) => $entity->isPublished() ?$value: '马上就来…');
混杂。选项
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20
文本框::新(“firstName”,“名字”)//如果是TRUE,列表可以通过这个字段排序(默认值:TRUE)//未映射的字段和Doctrine关联不能排序->setSortable (假)//在'detail', 'edit'和'new'页面中显示该字段的帮助信息->setHelp (“…')//设置Symfony表单中' empty_data '选项的值欧宝娱乐app下载地址//见https://symf欧宝娱乐app下载地址ony.com/doc/current/reference/forms/types/form.html#empty-data->setEmptyData (“简”)//用于在'e欧宝娱乐app下载地址dit'/'new'页面中呈现该字段的Symfony Form类型//(字段有这个选项的默认值,所以你通常不配置这个)->setFormType (TextType::类)//传递给Symfony表单类型的参数数组欧宝娱乐app下载地址//(这只覆盖传递的表单类型选项的值;//它保持所有其他现有类型选项不变)->setFormTypeOptions ([“option_name”= >“option_value”])
创建自定义字段
字段是实现的类EasyCorp
.尽管接口只需要实现几个方法,但您可能希望在内置字段中添加所有可用的方法,以配置所有公共字段选项。您可以使用EasyCorp
的。
假设您想要创建一个自定义MapField
它为给定的邮政地址呈现完整的地图。这是你可以为字段创建的类:
12 34 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
名称空间应用程序\管理\场;使用EasyCorp\包\EasyAdminBundle\合同\场\FieldInterface;使用EasyCorp\包\EasyAdminBundle\场\FieldTrait;使用欧宝娱乐app下载地址\组件\形式\扩展\核心\类型\TextareaType;最后类MapField实现了FieldInterface{使用FieldTrait;/ * * *@param字符串|false|null $label */公共静态函数新(字符串$propertyName,$标签= null):自我{返回(新自我())->setProperty ($propertyName)->setLabel ($标签)//该模板用于'index'和'detail'页面->setTemplatePath (“管理/场/ map.html.twig”)//在'edit'和'new'页面中使用,以编辑字段内容//你也可以使用自己的表单类型->setFormType (TextareaType::类)->addCssClass (“分布图”)//加载与给定Webpack Encore条目关联的CSS和JS资产//在任何CRUD页面(index/detail/edit/new)。这相当于呼叫/ / encore_entry_link_tags(“…”)和encore_entry_script_tags(……)->addWebpackEncoreEntries (“admin-field-map”)//这些方法允许定义web资产加载时//字段显示在任何CRUD页面(index/detail/edit/new)->addCssFiles (“js / admin / field-map.css”)->addJsFiles (“js / admin / field-map.js”);}}
对象中呈现字段的模板指数
而且细节
CRUD页面.模板可以使用任何树枝模板特性和以下变量:
ea
,一个EasyCorp
实例,该实例存储管理上下文它在所有后端模板中都可用;\包 \ EasyAdminBundle \上下文 \ AdminContext 场
,一个EasyCorp
存储被呈现字段的配置和值的实例;\包 \ EasyAdminBundle \ Dto \ FieldDto 实体
,一个EasyCorp
实例,用于存储该字段所属实体的实例和关于该Doctrine实体的其他有用数据。\包 \ EasyAdminBundle \ Dto \ EntityDto
请注意
中没有使用该模板编辑
而且新
CRUD页面,使用欧宝娱乐app下载地址Symfony形式主题定义如何显示每个表单字段。
这是所有。你现在可以在任何CRUD控制器中使用这个字段:
1 2 3 4 5 6 7 8 9
使用应用程序\管理\MapField;公共函数configureFields(字符串$pageName):可迭代的{返回(/ /……MapField::新(“shipAddress”),);}
自定义选项
如果字段可以以任何方式进行配置,则可以为其添加自定义选项。添加选项的推荐方法是将它们的名称定义为字段对象中的公共常量,并使用setCustomOption ()
方法中定义的FieldTrait
来设定他们的价值观。
想象一下MapField
在前一节中定义的允许使用谷歌Maps或OpenStreetMap来呈现地图。您可以添加该选项如下:
12 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
名称空间应用程序\管理\场;使用EasyCorp\包\EasyAdminBundle\合同\场\FieldInterface;使用欧宝娱乐app下载地址\组件\形式\扩展\核心\类型\TextareaType;最后类MapField实现了FieldInterface{使用FieldTrait;公共常量OPTION_MAP_PROVIDER =“mapProvider”;公共静态函数新(字符串$propertyName字符串,?$标签= null):自我{返回(新自我())/ /……->setCustomOption (自我::OPTION_MAP_PROVIDER,“公开”);}公共函数useGoogleMaps():自我{$这->setCustomOption (自我::OPTION_MAP_PROVIDER,“谷歌”);返回$这;}公共函数useOpenStreetMap():自我{$这->setCustomOption (自我::OPTION_MAP_PROVIDER,“公开”);返回$这;}}
控件访问这些选项getCustomOptions ()
场DTO方法。例如,在一个Twig模板中:
1 2 3 4 5 6 7 8 9 10 11
{# admin /场/ map.html。树枝#}{%如果'谷歌' === field.customOptions.get('mapProvider') %}{#……#}{%endif%}如果你将字段选项定义为公共常量,你也可以在模板中访问它们(尽管结果代码有点冗长){%集map_provider_option =常数(' App \ \管理\ \ MapField: OPTION_MAP_PROVIDER”)%}{%如果'谷歌' === field.customOptions.get(map_provider_option) %}{#……#}{%endif%}
场配置器
某些字段的一些默认选项取决于实体属性的值,该值仅在运行时可用。这就是为什么你可以选择定义a场配置器,这是一个在呈现字段之前更新字段配置的类。
EasyAdmin为其内置字段定义了大量配置器。您也可以创建自己的配置器(可以配置自己的字段和/或内置字段)。字段配置器是实现的类EasyCorp
.
实现之后,为您的配置器定义一个Symfony服务,并用欧宝娱乐app下载地址ea.field_configurator
标签。可以选择定义优先级
标记的属性,以便在内置配置器之前或之后运行配置器。