形式
编辑该页面警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.2,不再维护。
读这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。
任务类表示并存储数据为单个任务:
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
/ / src / Acme / / Task.php TaskBundle /实体名称空间Acme\TaskBundle\实体;类任务{受保护的美元任务;受保护的美元dueDate;公共函数getTask(){返回美元这- >任务;}公共函数setTask(美元任务){美元这- >任务=美元任务;}公共函数getDueDate(){返回美元这- >dueDate;}公共函数setDueDate(\ DateTime美元dueDate= null){美元这- >dueDate =美元dueDate;}}
请注意
如果你编码和这个例子中,创建的AcmeTaskBundle
首先通过运行以下命令(和接受所有默认选项):
1
php应用程序/控制台生成:美元= Acme / TaskBundle包——名称空间
这个类是一个“plain-old-PHP-object”,因为,到目前为止,它已经与Symfony或任何其他图书馆。欧宝娱乐app下载地址很简单的一个正常的PHP对象里面直接解决问题<新兴市场>你的新兴市场>应用程序(例如,需要在应用程序中代表一个任务)。当然,在本章结束时,您将能够提交数据任务
实例(通过HTML表单),验证其数据,并保存到数据库。
任务类,下一步是创建和渲染实际的HTML表单。Sym欧宝娱乐app下载地址fony2,这是通过构建一个form对象,然后呈现在一个模板。现在,从在一个控制器都可以做到这一点:
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日
/ / src / Acme / TaskBundle /控制器/ DefaultController.php名称空间Acme\TaskBundle\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\控制器;使用Acme\TaskBundle\实体\任务;使用欧宝娱乐app下载地址\组件\HttpFoundation\请求;类DefaultController扩展控制器{公共函数newAction(请求美元请求){/ /创建一个任务,给它一些虚拟的数据对于这个示例美元任务=新任务();美元任务- >setTask (“写博客”);美元任务- >setDueDate (新\ DateTime (“明天”));美元形式=美元这- >createFormBuilder (美元任务)- >add (“任务”,“文本”)- >add (“dueDate”,“日期”)- >getForm ();返回美元这- >呈现(“AcmeTaskBundle:违约:new.html.twig”,数组(“形式”= >美元形式- >createView ()));}}
提示
这个例子展示了如何构建表单直接控制器。后,在“形式”部分中,您将学习如何构建表单在一个独立的类,这是推荐为表单变得可重用。
创建一个表单需要相对较少的代码,因为Symfony2表单对象构建“形式构建器”。欧宝娱乐app下载地址表单生成器的目的是允许您编写简单的形式“食谱”,并让它做所有的重型起重建筑形式。
在这个示例中,您已经添加了形式——两个字段任务
和dueDate
- - - - - -对应任务
和dueDate
的属性任务
类。你也分配每一个“类型”(如。文本
,日期
),除此之外,确定哪些HTML表单标签(s)呈现。
欧宝娱乐app下载地址Symfony2有很多内置的类型(见不久将讨论形式)。
$形式- > createView ()在上面的控制器),使用一组表单辅助函数:
- 嫩枝
- PHP
1 2 3 4 5 6
{# src / Acme / TaskBundle /资源/视图/ / new.html违约。树枝#}<形式行动=”{{路径(task_new)}}”方法=“职位”{{form_enctype(形式)}}>{{form_widget(形式)}}<输入类型=“提交”/ >< /形式>
1 2 3 4 5 6
< !- - - - - -- - - - - -src/Acme/TaskBundle/Resources/views/Default/new.html.php -->< /span><形式行动=“< ?php回声美元视图['router']->generate('task_new') ?>"< /span>方法=“职位”< ?php回声美元视图['形式']- - - - - ->enctype(形式)美元? > >< ? php回声美元视图(“形式”]- >小部件(美元形式)? ><输入类型=“提交”/ >< /形式>
请注意
这个示例假设您已经创建了一个路线task_new
指向AcmeTaskBundle:默认值:新的
前面创建的控制器。
就是这样!通过印刷form_widget(形式)
每个字段的形式呈现,以及一个标签和错误消息(如果有的话)。像这是那么容易,不是非常灵活的(还)。通常情况下,你要单独渲染每个表单字段,这样你就可以控制形式的样子。你将学习如何在“形式”一节。
在继续之前,请注意如何呈现任务
输入字段的值任务
财产的美元的任务
对象(即。“写博客”)。这是第一份工作的一种形式:把数据从一个对象转换成适合的格式,会呈现在一个HTML表单。
提示
表单系统是足够聪明来访问受保护的价值任务
属性通过getTask ()
和setTask ()
方法任务
类。除非一个属性是公共的,它<新兴市场>必须新兴市场>有“getter”和“setter”方法,以便表单组件可以get和put数据到财产。对于一个布尔属性,您可以使用一个“伊塞”或“有”的方法(如。发表()
或hasReminder ()
)而不是一个getter(如。个短篇()
或getReminder ()
)。
2.1
支持“有”的方法是添加在Symfony 2.1。欧宝娱乐app下载地址
2.1
的绑定
在Symfony 2.1方法更加灵活。欧宝娱乐app下载地址现在接受原始客户端数据(和以前一样)或Symfony请求对象。欧宝娱乐app下载地址这是首选的弃用bindRequest
方法。
当提交表单时,控制器结合提交的数据形式,这意味着数据回任务
和dueDate
的属性美元的任务
对象。这些都是通过bind ()
方法。
请注意
一旦bind ()
被调用时,提交的数据立即转移到底层对象。这种情况不管底层数据是有效的。
这个控制器处理形式,遵循一个共同的模式,有三个可能的路径:
- 最初在浏览器中加载页面时,请求方法
得到
形式是简单地创建和渲染;
- 当用户提交表单(即方法
帖子
)和无效数据(验证将在下一节中讨论),表单绑定,然后呈现,这一次显示所有的验证错误;
- 与有效数据,当用户提交表单,表单绑定,你有机会使用执行一些操作
美元的任务
对象(例如持久化到数据库)之前将用户重定向到其他页面(例如,一个“谢谢”或“成功”页面)。
请注意
重定向用户表单提交成功后可以防止用户能够点击“刷新”并转发数据。
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
/ / src / Acme / / Task.php TaskBundle /实体名称空间Acme\TaskBundle\实体;类任务{受保护的美元任务;受保护的美元dueDate;公共函数getTask(){返回美元这- >任务;}公共函数setTask(美元任务){美元这- >任务=美元任务;}公共函数getDueDate(){返回美元这- >dueDate;}公共函数setDueDate(\ DateTime美元dueDate= null){美元这- >dueDate =美元dueDate;}}
请注意
如果你编码和这个例子中,创建的AcmeTaskBundle
首先通过运行以下命令(和接受所有默认选项):
1
php应用程序/控制台生成:美元= Acme / TaskBundle包——名称空间
任务
实例(通过HTML表单),验证其数据,并保存到数据库。任务类,下一步是创建和渲染实际的HTML表单。Sym欧宝娱乐app下载地址fony2,这是通过构建一个form对象,然后呈现在一个模板。现在,从在一个控制器都可以做到这一点:
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日
/ / src / Acme / TaskBundle /控制器/ DefaultController.php名称空间Acme\TaskBundle\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\控制器;使用Acme\TaskBundle\实体\任务;使用欧宝娱乐app下载地址\组件\HttpFoundation\请求;类DefaultController扩展控制器{公共函数newAction(请求美元请求){/ /创建一个任务,给它一些虚拟的数据对于这个示例美元任务=新任务();美元任务- >setTask (“写博客”);美元任务- >setDueDate (新\ DateTime (“明天”));美元形式=美元这- >createFormBuilder (美元任务)- >add (“任务”,“文本”)- >add (“dueDate”,“日期”)- >getForm ();返回美元这- >呈现(“AcmeTaskBundle:违约:new.html.twig”,数组(“形式”= >美元形式- >createView ()));}}
提示
这个例子展示了如何构建表单直接控制器。后,在“形式”部分中,您将学习如何构建表单在一个独立的类,这是推荐为表单变得可重用。
创建一个表单需要相对较少的代码,因为Symfony2表单对象构建“形式构建器”。欧宝娱乐app下载地址表单生成器的目的是允许您编写简单的形式“食谱”,并让它做所有的重型起重建筑形式。
在这个示例中,您已经添加了形式——两个字段任务
和dueDate
- - - - - -对应任务
和dueDate
的属性任务
类。你也分配每一个“类型”(如。文本
,日期
),除此之外,确定哪些HTML表单标签(s)呈现。
欧宝娱乐app下载地址Symfony2有很多内置的类型(见不久将讨论形式)。
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日
/ / src / Acme / TaskBundle /控制器/ DefaultController.php名称空间Acme\TaskBundle\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\控制器;使用Acme\TaskBundle\实体\任务;使用欧宝娱乐app下载地址\组件\HttpFoundation\请求;类DefaultController扩展控制器{公共函数newAction(请求美元请求){/ /创建一个任务,给它一些虚拟的数据对于这个示例美元任务=新任务();美元任务- >setTask (“写博客”);美元任务- >setDueDate (新\ DateTime (“明天”));美元形式=美元这- >createFormBuilder (美元任务)- >add (“任务”,“文本”)- >add (“dueDate”,“日期”)- >getForm ();返回美元这- >呈现(“AcmeTaskBundle:违约:new.html.twig”,数组(“形式”= >美元形式- >createView ()));}}
提示
这个例子展示了如何构建表单直接控制器。后,在“形式”部分中,您将学习如何构建表单在一个独立的类,这是推荐为表单变得可重用。
任务
和dueDate
- - - - - -对应任务
和dueDate
的属性任务
类。你也分配每一个“类型”(如。文本
,日期
),除此之外,确定哪些HTML表单标签(s)呈现。$形式- > createView ()在上面的控制器),使用一组表单辅助函数:
- 嫩枝
- PHP
1 2 3 4 5 6
{# src / Acme / TaskBundle /资源/视图/ / new.html违约。树枝#}<形式行动=”{{路径(task_new)}}”方法=“职位”{{form_enctype(形式)}}>{{form_widget(形式)}}<输入类型=“提交”/ >< /形式>
1 2 3 4 5 6
< !- - - - - -- - - - - -src/Acme/TaskBundle/Resources/views/Default/new.html.php -->< /span><形式行动=“< ?php回声美元视图['router']->generate('task_new') ?>"< /span>方法=“职位”< ?php回声美元视图['形式']- - - - - ->enctype(形式)美元? > >< ? php回声美元视图(“形式”]- >小部件(美元形式)? ><输入类型=“提交”/ >< /形式>
请注意
这个示例假设您已经创建了一个路线task_new
指向AcmeTaskBundle:默认值:新的
前面创建的控制器。
就是这样!通过印刷form_widget(形式)
每个字段的形式呈现,以及一个标签和错误消息(如果有的话)。像这是那么容易,不是非常灵活的(还)。通常情况下,你要单独渲染每个表单字段,这样你就可以控制形式的样子。你将学习如何在“形式”一节。
在继续之前,请注意如何呈现任务
输入字段的值任务
财产的美元的任务
对象(即。“写博客”)。这是第一份工作的一种形式:把数据从一个对象转换成适合的格式,会呈现在一个HTML表单。
提示
表单系统是足够聪明来访问受保护的价值任务
属性通过getTask ()
和setTask ()
方法任务
类。除非一个属性是公共的,它<新兴市场>必须新兴市场>有“getter”和“setter”方法,以便表单组件可以get和put数据到财产。对于一个布尔属性,您可以使用一个“伊塞”或“有”的方法(如。发表()
或hasReminder ()
)而不是一个getter(如。个短篇()
或getReminder ()
)。
2.1
支持“有”的方法是添加在Symfony 2.1。欧宝娱乐app下载地址
- 嫩枝
- PHP
1 2 3 4 5 6
{# src / Acme / TaskBundle /资源/视图/ / new.html违约。树枝#}<形式行动=”{{路径(task_new)}}”方法=“职位”{{form_enctype(形式)}}>{{form_widget(形式)}}<输入类型=“提交”/ >< /形式>
1 2 3 4 5 6
< !- - - - - -- - - - - -src/Acme/TaskBundle/Resources/views/Default/new.html.php -->< /span><形式行动=“< ?php回声美元视图['router']->generate('task_new') ?>"< /span>方法=“职位”< ?php回声美元视图['形式']- - - - - ->enctype(形式)美元? > >< ? php回声美元视图(“形式”]- >小部件(美元形式)? ><输入类型=“提交”/ >< /形式>
请注意
这个示例假设您已经创建了一个路线task_new
指向AcmeTaskBundle:默认值:新的
前面创建的控制器。
form_widget(形式)
每个字段的形式呈现,以及一个标签和错误消息(如果有的话)。像这是那么容易,不是非常灵活的(还)。通常情况下,你要单独渲染每个表单字段,这样你就可以控制形式的样子。你将学习如何在“形式”一节。任务
输入字段的值任务
财产的美元的任务
对象(即。“写博客”)。这是第一份工作的一种形式:把数据从一个对象转换成适合的格式,会呈现在一个HTML表单。提示
表单系统是足够聪明来访问受保护的价值任务
属性通过getTask ()
和setTask ()
方法任务
类。除非一个属性是公共的,它<新兴市场>必须新兴市场>有“getter”和“setter”方法,以便表单组件可以get和put数据到财产。对于一个布尔属性,您可以使用一个“伊塞”或“有”的方法(如。发表()
或hasReminder ()
)而不是一个getter(如。个短篇()
或getReminder ()
)。
2.1
支持“有”的方法是添加在Symfony 2.1。欧宝娱乐app下载地址
2.1
的绑定
在Symfony 2.1方法更加灵活。欧宝娱乐app下载地址现在接受原始客户端数据(和以前一样)或Symfony请求对象。欧宝娱乐app下载地址这是首选的弃用bindRequest
方法。
任务
和dueDate
的属性美元的任务
对象。这些都是通过bind ()
方法。请注意
一旦bind ()
被调用时,提交的数据立即转移到底层对象。这种情况不管底层数据是有效的。
得到
形式是简单地创建和渲染;帖子
)和无效数据(验证将在下一节中讨论),表单绑定,然后呈现,这一次显示所有的验证错误;美元的任务
对象(例如持久化到数据库)之前将用户重定向到其他页面(例如,一个“谢谢”或“成功”页面)。请注意
重定向用户表单提交成功后可以防止用户能够点击“刷新”并转发数据。
任务)。换句话说,问题不是“形式”是否有效,但是否美元的任务
对象是有效的表单之后应用提交的数据。调用$ - > isValid形式()
是一个快捷方式,要求吗美元的任务
对象是否有效的数据。
验证是通过添加一组规则一个类(称为约束)。看到这,以便添加验证约束任务
字段不能为空,dueDate
字段不能为空,必须有效的DateTime对象。
- YAML
- 注释
- XML
- PHP
1 2 3 4 5 6 7 8
# Acme / TaskBundle /资源/ config / validation.ymlAcme实体\ TaskBundle \ \任务:属性:任务:- - - - - -NotBlank:~dueDate:- - - - - -NotBlank:~- - - - - -类型:\ DateTime
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/ / Acme / TaskBundle /实体/ Task.php使用欧宝娱乐app下载地址\组件\验证器\约束作为断言;类任务{/ * * *@Assert\ NotBlank () * /公共美元任务;/ * * *@Assert* \ NotBlank ()@Assert\类型(" \ DateTime ") * /受保护的美元dueDate;}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
< !- - - - - -- - - - - -Acme/TaskBundle/Resources/config/validation.xml -->< /span>< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><constraint-mappingxmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/constraint-mapping”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/constraint-mapping //www.oldmanjams.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd”><类的名字=“Acme实体\ TaskBundle \ \任务”><财产的名字=“任务”><约束的名字=“NotBlank”/ >< /财产><财产的名字=“dueDate”><约束的名字=“NotBlank”/ ><约束的名字=“类型”>\ DateTime< /约束>< /财产>< /类>< /constraint-mapping>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/ / Acme / TaskBundle /实体/ Task.php使用欧宝娱乐app下载地址\组件\验证器\映射\ClassMetadata;使用欧宝娱乐app下载地址\组件\验证器\约束\NotBlank;使用欧宝娱乐app下载地址\组件\验证器\约束\类型;类任务{/ /……公共静态函数loadValidatorMetadata(ClassMetadata美元元数据){美元元数据- >addPropertyConstraint (“任务”,新NotBlank ());美元元数据- >addPropertyConstraint (“dueDate”,新NotBlank ());美元元数据- >addPropertyConstraint (“dueDate”,新类型(“\ DateTime”));}}
就是这样!如果你重新提交表单无效数据,您将看到相应的错误打印的形式。
HTML5的验证
HTML5,许多本地浏览器可以在客户端上执行特定的验证约束。最常见的验证激活呈现要求
属性字段是必需的。对于支持HTML5的浏览器,这将导致原生浏览器消息显示,如果用户试图提交表单字段空白。
生成的形式充分利用这个新特性添加合理的HTML属性触发验证。然而,客户端验证可以通过添加禁用已经
属性的形式
标签或formnovalidate
提交标记。这是特别有用,当你想测试您的服务器端验证约束,但被浏览器阻止了,例如,提交空白领域。
Symfony2验证是一个非常强大的特性,都有它自己的欧宝娱乐app下载地址专用的章。
验证组,您需要指定验证组(s)表单应该使用:
1 2 3
美元形式=美元这- >createFormBuilder (美元用户,数组(“validation_groups”= >数组(“注册”)))- >添加(…);
如果你创建表单类(一个好的实践),那么你需要添加以下setDefaultOptions ()
方法:
1 2 3 4 5 6 7 8
使用欧宝娱乐app下载地址\组件\OptionsResolver\OptionsResolverInterface;公共函数setDefaultOptions(OptionsResolverInterface美元解析器){美元解析器- >setDefaults (数组(“validation_groups”= >数组(“注册”)));}
在这两种情况下,<新兴市场>只有新兴市场>的登记
验证小组将被用来验证底层对象。
如果你需要一些先进的逻辑来确定验证组织(如根据提交的数据),可以设置validation_groups
选项数组回调或关闭
:
1 2 3 4 5 6 7 8 9 10 11
使用欧宝娱乐app下载地址\组件\OptionsResolver\OptionsResolverInterface;公共函数setDefaultOptions(OptionsResolverInterface美元解析器){美元解析器- >setDefaults (数组(“validation_groups”= >数组(“Acme \ \ AcmeBundle \实体客户端”,“determineValidationGroups”)));}
这将调用静态方法determineValidationGroups ()
在客户端
类绑定表单之后,但在执行验证。表单对象作为参数传递给该方法(见下一个示例)。您还可以定义整个逻辑内联使用闭包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用欧宝娱乐app下载地址\组件\形式\FormInterface;使用欧宝娱乐app下载地址\组件\OptionsResolver\OptionsResolverInterface;公共函数setDefaultOptions(OptionsResolverInterface美元解析器){美元解析器- >setDefaults (数组(“validation_groups”= >函数(FormInterface美元形式){美元数据=美元形式- >getData ();如果(实体\客户::TYPE_PERSON = =美元数据- >方法()){返回数组(“人”);}其他的{返回数组(“公司”);}});}
任务
字段不能为空,dueDate
字段不能为空,必须有效的DateTime对象。- YAML
- 注释
- XML
- PHP
1 2 3 4 5 6 7 8
# Acme / TaskBundle /资源/ config / validation.ymlAcme实体\ TaskBundle \ \任务:属性:任务:- - - - - -NotBlank:~dueDate:- - - - - -NotBlank:~- - - - - -类型:\ DateTime
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/ / Acme / TaskBundle /实体/ Task.php使用欧宝娱乐app下载地址\组件\验证器\约束作为断言;类任务{/ * * *@Assert\ NotBlank () * /公共美元任务;/ * * *@Assert* \ NotBlank ()@Assert\类型(" \ DateTime ") * /受保护的美元dueDate;}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
< !- - - - - -- - - - - -Acme/TaskBundle/Resources/config/validation.xml -->< /span>< ?xml version = " 1.0 " encoding = " utf - 8 " ? ><constraint-mappingxmlns=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/constraint-mapping”xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation=“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/constraint-mapping //www.oldmanjams.com/schema/dic/constraint-mapping/constraint-mapping-1.0.xsd”><类的名字=“Acme实体\ TaskBundle \ \任务”><财产的名字=“任务”><约束的名字=“NotBlank”/ >< /财产><财产的名字=“dueDate”><约束的名字=“NotBlank”/ ><约束的名字=“类型”>\ DateTime< /约束>< /财产>< /类>< /constraint-mapping>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/ / Acme / TaskBundle /实体/ Task.php使用欧宝娱乐app下载地址\组件\验证器\映射\ClassMetadata;使用欧宝娱乐app下载地址\组件\验证器\约束\NotBlank;使用欧宝娱乐app下载地址\组件\验证器\约束\类型;类任务{/ /……公共静态函数loadValidatorMetadata(ClassMetadata美元元数据){美元元数据- >addPropertyConstraint (“任务”,新NotBlank ());美元元数据- >addPropertyConstraint (“dueDate”,新NotBlank ());美元元数据- >addPropertyConstraint (“dueDate”,新类型(“\ DateTime”));}}
HTML5的验证
HTML5,许多本地浏览器可以在客户端上执行特定的验证约束。最常见的验证激活呈现要求
属性字段是必需的。对于支持HTML5的浏览器,这将导致原生浏览器消息显示,如果用户试图提交表单字段空白。
生成的形式充分利用这个新特性添加合理的HTML属性触发验证。然而,客户端验证可以通过添加禁用已经
属性的形式
标签或formnovalidate
提交标记。这是特别有用,当你想测试您的服务器端验证约束,但被浏览器阻止了,例如,提交空白领域。
验证组,您需要指定验证组(s)表单应该使用:
1 2 3
美元形式=美元这- >createFormBuilder (美元用户,数组(“validation_groups”= >数组(“注册”)))- >添加(…);
1 2 3
美元形式=美元这- >createFormBuilder (美元用户,数组(“validation_groups”= >数组(“注册”)))- >添加(…);
如果你创建表单类(一个好的实践),那么你需要添加以下setDefaultOptions ()
方法:
1 2 3 4 5 6 7 8
使用欧宝娱乐app下载地址\组件\OptionsResolver\OptionsResolverInterface;公共函数setDefaultOptions(OptionsResolverInterface美元解析器){美元解析器- >setDefaults (数组(“validation_groups”= >数组(“注册”)));}
在这两种情况下,<新兴市场>只有新兴市场>的登记
验证小组将被用来验证底层对象。
validation_groups
选项数组回调或关闭
:1 2 3 4 5 6 7 8 9 10 11
使用欧宝娱乐app下载地址\组件\OptionsResolver\OptionsResolverInterface;公共函数setDefaultOptions(OptionsResolverInterface美元解析器){美元解析器- >setDefaults (数组(“validation_groups”= >数组(“Acme \ \ AcmeBundle \实体客户端”,“determineValidationGroups”)));}
determineValidationGroups ()
在客户端
类绑定表单之后,但在执行验证。表单对象作为参数传递给该方法(见下一个示例)。您还可以定义整个逻辑内联使用闭包:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用欧宝娱乐app下载地址\组件\形式\FormInterface;使用欧宝娱乐app下载地址\组件\OptionsResolver\OptionsResolverInterface;公共函数setDefaultOptions(OptionsResolverInterface美元解析器){美元解析器- >setDefaults (数组(“validation_groups”= >函数(FormInterface美元形式){美元数据=美元形式- >getData ();如果(实体\客户::TYPE_PERSON = =美元数据- >方法()){返回数组(“人”);}其他的{返回数组(“公司”);}});}
dueDate领域目前正呈现为3选择框。然而,日期字段可以配置为显示为一个单一的文本框(用户输入的日期作为一个字符串在盒子里):
1
- >add (“dueDate”,“日期”,数组(“部件”= >“single_text”))
1
- >add (“dueDate”,“日期”,数组(“部件”= >“single_text”))
每个字段类型都有许多不同的选项,可以传递给它。这些特定于字段类型和细节可以在每种类型的文档中找到。欧宝体育电话
的要求
选项
最常见的选项要求
选项,它可以应用于任何领域。默认情况下,要求
选项设置为真正的
,这意味着准备好了支持html5技术的浏览器将客户端验证字段留空。如果你不希望这种行为,设置要求
选择在你的领域假
或禁用HTML5验证。
还要注意,设置要求
选项真正的
将不导致应用服务器端验证。换句话说,如果用户提交一个空白字段的值(用旧浏览器或web服务,例如),它会被接受作为一个有效的值,除非你使用Symfony的欧宝娱乐app下载地址NotBlank
或NotNull
验证约束。
换句话说,要求
选择“好”,但真正的服务器端验证<新兴市场>总是新兴市场>被使用。
的标签
选项
表单字段的标签可以设置使用标签
选项,它可以应用于任何领域:
1 2 3 4
- >add (“dueDate”,“日期”,数组(“部件”= >“single_text”,“标签”= >“到期日”,))
字段的标签也可以在模板设置呈现形式,见下文。