EntityType领域

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 5.0,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

EntityType领域

一个特殊的ChoiceType字段的设计从教义实体加载选项。例如,如果你有一个类别实体,您可以使用该字段来显示选择的所有领域,或者一些类别从数据库对象。

呈现为 可以各种标记(见ChoiceType领域(可以选择下拉框、单选按钮和复选框))
选项
覆盖选项
继承的选项 ChoiceType:-choice_attr- - - - - -choice_translation_domain- - - - - -扩大- - - - - -group_by- - - - - -多个- - - - - -占位符- - - - - -preferred_choices- - - - - -translation_domain- - - - - -修剪FormType:-attr- - - - - -数据- - - - - -禁用- - - - - -empty_data- - - - - -error_bubbling- - - - - -error_mapping- - - - - -帮助- - - - - -help_attr- - - - - -help_html- - - - - -标签- - - - - -label_attr- - - - - -label_format- - - - - -映射- - - - - -要求- - - - - -row_attr- - - - - -label_translation_parameters- - - - - -attr_translation_parameters- - - - - -help_translation_parameters
父类型 ChoiceType
EntityType

提示

选项的完整列表和继承了这种类型定义在你的应用可以运行这个命令:

1 2
#替换“FooType”的表单类型的类名美元php bin /控制台调试:FooType形式

基本用法

实体所需类型只有一个选择:在列出的实体应该选择字段:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
使用应用程序\实体\用户;使用ob娱乐下载\\学说\形式\类型\EntityType;/ /……美元构建器- >add (“用户”,EntityType::类,/ /查找选择从这个实体“类”= >用户::类,/ /使用用户。使用rname property as the visible option string“choice_label”= >“用户名”,/ /用于呈现一个选择框,复选框或收音机/ /“多个”= >真的,/ /“扩大”= >真的,]);

这将建立一个选择下拉菜单包含所有用户数据库中的对象。呈现单选按钮或复选框,而不是改变多个扩大选项。

使用自定义查询的实体

如果你想创建一个自定义查询时使用获取的实体(如您只想返回一些实体,或需要订购),使用query_builder选择:

1 2 3 4 5 6 7 8 9 10 11 12 13
使用应用程序\实体\用户;使用学说\ORM\EntityRepository;使用ob娱乐下载\\学说\形式\类型\EntityType;/ /……美元构建器- >add (“用户”,EntityType::类,“类”= >用户::类,“query_builder”= >函数(EntityRepository美元){返回美元- >createQueryBuilder (“u”)- >orderBy (“u.username”,“ASC”);},“choice_label”= >“用户名”]);

请注意

使用形式集合可能导致使太多的数据库请求获取相关的实体。这是众所周知的“N + 1查询问题”它可以解决加入相关记录当查询理论关联。

使用选择

如果你已经有确切的实体的集合,您想要包含在选择元素,只是通过他们通过选择关键。

例如,如果你有一个美元集团变量(传递到表单可能作为一种选项)getuser ()返回的集合用户实体,然后你可以供应选择选项直接:

1 2 3 4 5 6 7 8
使用应用程序\实体\用户;使用ob娱乐下载\\学说\形式\类型\EntityType;/ /……美元构建器- >add (“用户”,EntityType::类,“类”= >用户::类,“选择”= >美元集团- >getuser ()));

选择标签,复选框或单选按钮

这一领域可能呈现为HTML字段之一,根据扩大多个选项:

元素类型 扩大 多个
选择标记
选择标签(多个属性) 真正的
单选按钮 真正的
复选框 真正的 真正的

场的选择

choice_label

类型:字符串,可调用的PropertyPath

这个属性应该用于显示在HTML元素实体作为文本:

1 2 3 4 5 6 7 8
使用应用程序\实体\类别;使用ob娱乐下载\\学说\形式\类型\EntityType;/ /……美元构建器- >add (“类别”,EntityType::类,“类”= >类别::类,“choice_label”= >“displayName的”]);

如果留空,实体对象将把一个字符串,所以必须有一个__toString ()方法。你也可以传递一个回调函数的控制:

1 2 3 4 5 6 7 8 9 10
使用应用程序\实体\类别;使用ob娱乐下载\\学说\形式\类型\EntityType;/ /……美元构建器- >add (“类别”,EntityType::类,“类”= >类别::类,“choice_label”= >函数(美元类别){返回美元类别- >getDisplayName ();}));

列表中的每个实体的方法被调用,传递给函数。更多细节,请参见主choice_label欧宝官网下载app文档。

请注意

传递一个字符串时,choice_label选项是一个属性的路径。所以你可以使用任何支持的PropertyAccessor组件

例如,如果翻译属性的对象实际上是一个关联数组,每一个都有的名字属性,那么你可以这样做:

1 2 3 4 5 6 7 8
使用应用程序\实体\类型;使用ob娱乐下载\\学说\形式\类型\EntityType;/ /……美元构建器- >add (“类型”,EntityType::类,“类”= >类型::类,“choice_label”= >“翻译(en) . name”]);

类型:字符串要求

类的实体(如。应用:类别)。这是一个完全限定类名(如。应用\ \实体类别之前)或简单的别名(如图所示)。

新兴市场

类型:字符串|主义\ \ ObjectManager持久性默认的:默认的实体管理器

如果指定,这个实体管理器将用于加载选择的默认的实体管理器。

query_builder

类型:学说\ ORM \ QueryBuilder或者一个可调用的默认的:

允许您创建一个自定义查询你的选择。看到EntityType领域了一个例子。

这个选项的值可以是一个QueryBuilder对象,调用或(将所有实体加载)。使用一个可调用时,你将会通过了EntityRepository实体作为唯一的参数,应该返回一个QueryBuilder。返回在关闭将导致加载所有实体。

谨慎

中使用的实体条款的query_builder选择总是会根据您指定的类进行验证选择。如果你返回另一个实体,而不是一个用于你条款(例如,如果你返回一个实体从加入表),它将打破验证。

覆盖选项

choice_name

类型:可调用的,字符串PropertyPath默认的:

控制的内部字段名称的选择。你通常不关心这个,但是在一些先进的情况下,您可能。例如,这个“name”成为选择的索引视图模板中,用作o一部分字段名称属性。

这是一个可调用或一个属性路径。看到choice_label类似的用法。默认情况下,选择键或一个递增整数可以使用(起价0)。

谨慎

配置的值必须是一个有效的表单名称。确保使用一个可调用时只返回有效的名称。有效的表单名称必须是由字母,数字,下划线,破折号和冒号,不得从少量开始或冒号。

EntityType,这个违约id的实体,如果它可以读取。否则,它落回使用增加的整数。

choice_value

类型:可调用的,字符串PropertyPath默认的:

返回字符串的“价值”对于每一个选择,这在所有的选择必须是唯一的。这是使用的价值属性在HTML和提交POST或PUT请求。你通常不需要担心这个,但它可能是方便的在处理一个API请求(因为您可以配置的值将被发送在API请求)。

这是一个可调用或一个属性路径。默认情况下,如果他们使用的选择是可以转化的字符串。否则一个递增(开始使用整数0)。

如果你通过一个可调用,它将接收一个参数:选择本身。当使用EntityType领域,参数将为每一个选择或实体对象在使用一个占位符,你需要处理:

1 2 3
“choice_value”= >函数(? MyOptionEntity美元实体){返回美元实体吗?美元实体- >getId ():;},

EntityType,这是覆盖使用id默认情况下。当id使用,原则只有查询的对象id是提交。

选择

类型:数组|\可反驳的默认的:

而不是让query_builder选项来获取实体包括为你,你可以通过选择直接选择。看到EntityType领域

data_class

类型:字符串默认的:

这个选项是不赞成使用选择需要查询的实体。

继承的选项

这些选项的继承ChoiceType:

choice_attr

类型:数组,可调用的,字符串PropertyPath默认的:[]

使用这个来添加额外的HTML属性选择。这可以成为一个关联数组的键匹配选择键和值的属性对于每一个选择,一个可调用或路径(就像一个属性choice_label)。

如果一个数组的键选择数组必须用作键:

1 2 3 4 5 6 7 8 9 10 11 12 13 14
使用ob娱乐下载\组件\形式\扩展\核心\类型\ChoiceType;/ /……美元构建器- >add (“参加”,ChoiceType::类,“选择”= > [“是的”= >真正的,“不”= >,“也许”= >),“choice_attr”= >函数(美元选择,美元关键,美元价值){/ /添加一个类像attending_yes attending_no等等返回(“类”= >“attending_”.strtolower (美元关键));}));

choice_translation_domain

类型:字符串,布尔

这个选项决定了如果选择值应该翻译和翻译领域。

的值choice_translation_domain选项可以真正的(重用当前翻译域),(禁用翻译),(使用翻译父域或默认域)或一个字符串代表确切的翻译领域使用。

扩大

类型:布尔默认的:

如果设置为真,单选按钮或复选框将会呈现(取决于多个值)。如果错误,选择元素呈现。

group_by

类型:字符串,可调用的PropertyPath默认的:

你可以组<选项>的元素<选择>< optgroup >通过一个多维数组选择。看到分组选项部分。

group_by选择另一种方法是集团的选择,给你更多的灵活性。

下面的例子:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
使用ob娱乐下载\组件\形式\扩展\核心\类型\ChoiceType;/ /……美元构建器- >add (“publishAt”,ChoiceType::类,“选择”= > [“现在”= >\ DateTime (“现在”),“明天”= >\ DateTime (“+ 1天”),“1周”= >\ DateTime (“+ 1周”),“一个月”= >\ DateTime (“+ 1月”),),“group_by”= >函数(美元选择,美元关键,美元价值){如果(美元选择< =\ DateTime (+ 3天的)){返回“很快”;}返回“后来”;}));

这组日期3天内到“很快”和其他“后来”< optgroup >:

如果你返回,选择不会分组。你还可以通过一个字符串”属性路径”,被称为组。看到choice_label使用一个属性路径的详细信息。

多个

类型:布尔默认的:

如果这是真的,用户将能够选择多个选项(而不是只选一个选项)。这取决于的价值扩大选项,这将使选择标记或复选框如果真选择标签或单选按钮如果假。返回的值是一个数组。

请注意

如果你正在与教义的实体的集合,它将有助于阅读的文档欧宝官网下载appCollectionType领域。此外,有一个完整的示例如何嵌入一组形式篇文章。

占位符

类型:字符串布尔

这个选项决定是否一个特殊的“空”选项(如。“选择一个选项”)将出现在顶部的选择小部件。此选项仅适用于如果多个选项设置为false。

  • 添加一个空值与“选择一个选项”:

    1 2 3 4 5 6
    使用ob娱乐下载\组件\形式\扩展\核心\类型\ChoiceType;/ /……美元构建器- >add (“州”,ChoiceType::类,“占位符”= >选择一个选项的]);
  • 保证没有“空”的价值选择是显示:

    1 2 3 4 5 6
    使用ob娱乐下载\组件\形式\扩展\核心\类型\ChoiceType;/ /……美元构建器- >add (“州”,ChoiceType::类,“占位符”= >]);

如果你离开占位符选项设置,然后一个空白(无文本)选项将自动添加当且仅当要求选项是错误的:

1 2 3 4 5 6 7
使用ob娱乐下载\组件\形式\扩展\核心\类型\ChoiceType;/ /……/ /一个空白(没有文本)选项将被添加美元构建器- >add (“州”,ChoiceType::类,“要求”= >]);

preferred_choices

类型:数组可调用的默认的:[]

这个选项允许您移动某些选择列表的顶端与视觉之间的分隔符和其他选项。这个选项将实体对象的数组:

1 2 3 4 5 6 7 8 9
使用应用程序\实体\用户;使用ob娱乐下载\\学说\形式\类型\EntityType;/ /……美元构建器- >add (“用户”,EntityType::类,“类”= >用户::类,/ /这个方法必须返回一个数组的用户实体“preferred_choices”= >美元集团- >getPreferredUsers ()));

首选的选择呈现时才有其意义选择元素(即。扩大假)。优先选择和正常的选择是由一组分离视觉虚线(即。- - - - - - - - - - - - - - - - - - -)。这可以定制在呈现字段:

1
{{form_widget(形式。publishAt,{“分离器”:“= = = = = '})}}

translation_domain

类型:字符串默认的:消息

以防choice_translation_domain被设置为真正的这个配置准确的翻译领域,将用于呈现的任何标签或选项。

修剪

类型:布尔默认的:

调整默认情况下是禁用的,因为选择的值或值必须匹配给定的选择值(和他们可以包含空格)。

这些选项的继承形式类型:

attr

类型:数组默认的:[]

如果你想添加额外的属性可以使用HTML字段表示attr选择。这是一个与HTML属性关联数组的键。这可能是有用的,当你需要设置一个自定义类部件:

1 2 3
美元构建器- >add (“身体”,TextareaType::类,“attr”= > [“类”= >“tinymce”)));

另请参阅

使用row_attr选择如果你想将这些属性添加到表单类型行元素。

数据

类型:混合默认的:默认字段的底层结构。

当你创建一个表单,最初显示每个字段的值对应的表单的域数据的属性(例如,如果您将对象绑定到表单)。如果你想覆盖这个表单或单个字段的初始值,你可以设置它在数据选项:

1 2 3 4 5 6
使用ob娱乐下载\组件\形式\扩展\核心\类型\HiddenType;/ /……美元构建器- >add (“令牌”,HiddenType::类,“数据”= >“六边形abcdef”]);

谨慎

数据选项总是覆盖的值从域数据(对象)呈现。这意味着对象的值也覆盖当表单编辑已经持久化的对象,使其在表单提交时失去保存价值。

禁用

类型:布尔默认的:

如果你不想让用户修改一个字段的值,您可以设置禁用选项为true。任何提交的值将被忽略。

empty_data

类型:混合

. .这个文件只能包含开始追赶或目的
将这个占位符值。它的目的是让我们只包含该文件的一部分。

DEFAULT_PLACEHOLDER

这个选项决定了价值领域返回当提交的值为空(或失踪)。它没有设置一个初始值时如果没有提供一个视图的形式呈现。

这意味着它可以帮助您处理表单提交空白的领域。例如,如果你想要的的名字字段被显式地设置John Doe当选择没有价值,你可以这样做:

1 2 3 4
美元构建器- >add (“名字”,,(“要求”= >,“empty_data”= >“John Doe”]);

这仍将呈现一个空的文本框,但在提交John Doe值将被设置。使用数据占位符选项来显示这个初始值呈现形式。

如果一种复合,可以设置empty_data作为数组、对象或关闭。看到如何配置空数据形式类文章关于这些选项的更多细节。

请注意

如果你想设置empty_data选择整个表格类,看到如何配置空数据形式类篇文章。

谨慎

表单数据变形金刚仍将被应用到吗empty_data价值。这意味着将把一个空的string。使用自定义数据变压器如果你明确想返回一个空字符串。

:目的:DEFAULT_PLACEHOLDER

这个选项的默认值取决于其他字段选项:

  • 如果多个扩大,然后(空字符串);
  • 否则[](空数组)。

empty_data

类型:混合

. .这个文件只能包含开始追赶或目的
将这个占位符值。它的目的是让我们只包含该文件的一部分。

DEFAULT_PLACEHOLDER

这个选项决定了价值领域返回当提交的值为空(或失踪)。它没有设置一个初始值时如果没有提供一个视图的形式呈现。

这意味着它可以帮助您处理表单提交空白的领域。例如,如果你想要的的名字字段被显式地设置John Doe当选择没有价值,你可以这样做:

1 2 3 4
美元构建器- >add (“名字”,,(“要求”= >,“empty_data”= >“John Doe”]);

这仍将呈现一个空的文本框,但在提交John Doe值将被设置。使用数据占位符选项来显示这个初始值呈现形式。

如果一种复合,可以设置empty_data作为数组、对象或关闭。看到如何配置空数据形式类文章关于这些选项的更多细节。

请注意

如果你想设置empty_data选择整个表格类,看到如何配置空数据形式类篇文章。

谨慎

表单数据变形金刚仍将被应用到吗empty_data价值。这意味着将把一个空的string。使用自定义数据变压器如果你明确想返回一个空字符串。

:开始追赶:DEFAULT_PLACEHOLDER

error_bubbling

类型:布尔默认的:除非表单复合

如果真正的,这个领域的任何错误将被传递到父字段或形式。例如,如果设置为真正的正常,任何错误的字段将被附加到的主要形式,而不是特定的字段。

error_mapping

类型:数组默认的:[]

这个选项允许您修改验证错误的目标。

想象你有一个自定义的命名方法matchingCityAndZipCode ()验证城市和邮编是否匹配。不幸的是,没有matchingCityAndZipCode在表单字段,所以Symfony所能做的一切是显示错误的形式。ob娱乐下载

自定义错误映射,你可以做得更好:误差映射到城市字段以便它上面显示:

1 2 3 4 5 6 7 8
公共函数configureOptions(OptionsResolver美元解析器){美元解析器- >setDefaults ([“error_mapping”= > [“matchingCityAndZipCode”= >“城市”、]]);}

这里的规则是左边和右边的映射:

  • 左侧包含属性的路径;
  • 如果违反上生成一个类的属性或方法,它的路径propertyName;
  • 如果违反上生成一个条目的数组ArrayAccess对象,属性路径(indexName);
  • 您可以构建嵌套属性路径通过连接,分离属性点。例如:地址[工作].matchingCityAndZipCode;
  • 右侧包含表单中字段的名称。

默认情况下,没有任何属性映射错误将泡沫到父窗体。您可以使用点()左边错误的所有地图上未标明的属性映射到一个特定的领域。例如,所有这些错误的地图城市字段中,使用:

1 2 3 4 5
美元解析器- >setDefaults ([“error_mapping”= > [“。”= >“城市”、]]);

帮助

类型:字符串默认的:零

允许您定义一个表单字段的帮助信息,默认情况下是呈现以下字段:

1 2 3
美元构建器- >add (“zipCode”,,(“帮助”= >你的信用卡的邮政编码\ ' s帐单地址。]);

help_attr

类型:数组默认的:[]

设置元素的HTML属性用于显示帮助信息的表单字段。它的值是一个关联数组与HTML属性名称作为键。这些属性也可以在模板设置:

1 2 3
{{form_help (form.name,“你的名字”,{help_attr:{‘类’:‘CUSTOM_LABEL_CLASS}})}}

help_html

类型:bool默认的:

默认情况下,的内容帮助选择逃渲染他们之前的模板。设置这个选项真正的时不逃避它们,这是有用的帮助包含HTML元素。

标签

类型:字符串默认的:标签是“猜”字段名称

设置标签时,将使用渲染。设置为false将抑制标签。设置标签也可以直接在模板:

  • 嫩枝
  • PHP
1
{{了form_label (form.name '你的名字')}}

label_attr

类型:数组默认的:[]

集的HTML属性<标识>元素,它将使用时呈现字段的标签。这是一个关联数组与HTML属性作为一个关键。这个属性也可以直接设置在模板:

  • 嫩枝
  • PHP
1 2 3
{{了form_label (form.name,“你的名字”,{label_attr:{‘类’:‘CUSTOM_LABEL_CLASS}})}}

label_format

类型:字符串默认的:

配置字段的字符串作为标签,以防标签选择是没有设置,这是有用的在使用关键字翻译的消息

如果你使用关键字翻译信息标签,你经常有多个关键字信息相同的标签(如。profile_address_street,invoice_address_street)。这是因为每个“路径”的标签是建立一个字段。为了避免重复的关键字信息,您可以配置标签格式一个静态值,如:

1 2 3 4 5 6 7 8
/ /……美元profileFormBuilder- >add (“地址”,AddressType::类,“label_format”= >“form.address. %名称%”]);美元invoiceFormBuilder- >add (“发票”,AddressType::类,“label_format”= >“form.address. %名称%”]);

这个选项是遗传的子类型。上面的代码的标签两种形式将使用领域form.address.street关键字信息。

两个变量标签格式是可用的:

% id %
字段的惟一标识符,包括完整的路径字段和字段名(如。profile_address_street);
%的名字%
字段名(如。)。

默认值()的结果“人性化”版本的字段名。

请注意

label_format选择是评估形式的主题。如果你一定要更新您的模板定制的形式主题

映射

类型:布尔默认的:真正的

如果你希望这个领域被忽略阅读或写作对象时,你可以设置映射选项

要求

类型:布尔默认的:真正的

如果这是真的,一个HTML5必需属性将会呈现。相应的标签还将呈现的要求类。

这是肤浅的和独立的验证。在最好的情况下,如果你让Symfony猜ob娱乐下载你的字段类型,那么这个选项的值将从你的猜测验证信息。

请注意

所需的选择也会影响每个字段是空的数据如何处理。更多细节,请参阅empty_data选择。

row_attr

类型:数组默认的:[]

一个关联数组的HTML属性添加到元素用于呈现表单类型行:

1 2 3
美元构建器- >add (“身体”,TextareaType::类,“row_attr”= > [“类”= >“文本编辑器”,“id”= >“……”)));

另请参阅

使用attr选择如果你想将这些属性添加到表单类型小部件元素。

label_translation_parameters

类型:数组默认的:[]

的内容标签选择是在显示之前翻译,所以它可以包含翻译占位符。这个选项定义了用于替换这些占位符的值。

鉴于这种翻译的信息:

1 2
#翻译/ messages.en.yamlform.order.id:的标识符以%公司%的

您可以指定占位符的值如下:

1 2 3 4 5 6
美元构建器- >add (“id”,,(“标签”= >“form.order.id”,“label_translation_parameters”= > [%公司%的= >“ACME公司”。、]]);

label_translation_parameters选择儿童字段合并相同的选择他们的父母,这样孩子们就可以重用和/或覆盖的任何父占位符。

attr_translation_parameters

类型:数组默认的:[]

的内容标题占位符中定义的值attr选择是在显示之前翻译,所以它可以包含翻译占位符。这个选项定义了用于替换这些占位符的值。

鉴于这种翻译的信息:

1 2 3
#翻译/ messages.en.yamlform.order.id.placeholder:“输入惟一标识符以%公司%的form.order.id.title:这将在通信参考%公司%的

您可以指定占位符的值如下:

1 2 3 4 5 6 7 8 9
美元构建器- >add (“id”,,(“attr”= > [“占位符”= >“form.order.id.placeholder”,“标题”= >“form.order.id.title”),“attr_translation_parameters”= > [%公司%的= >“ACME公司”。、]]);

attr_translation_parameters选择儿童字段合并相同的选择他们的父母,这样孩子们就可以重用和/或覆盖的任何父占位符。

help_translation_parameters

类型:数组默认的:[]

的内容帮助选择是在显示之前翻译,所以它可以包含翻译占位符。这个选项定义了用于替换这些占位符的值。

鉴于这种翻译的信息:

1 2
#翻译/ messages.en.yamlform.order.id.help:这将在通信参考%公司%的

您可以指定占位符的值如下:

1 2 3 4 5 6
美元构建器- >add (“id”,,(“帮助”= >“form.order.id.help”,“help_translation_parameters”= > [%公司%的= >“ACME公司”。、]]);

help_translation_parameters选择儿童字段合并相同的选择他们的父母,这样孩子们就可以重用和/或覆盖的任何父占位符。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。