形式 编辑该页面 警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.2,不再维护。 读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。 请注意 Symfob娱乐下载ony的表单组件是一个独立的库,可以使用Symfony2以外的项目。有关更多信息,请参见ob娱乐下载Symfony2表单组件在Github上。 任务类表示并存储数据为单个任务: 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或任何其他图书馆。ob娱乐下载很简单的一个正常的PHP对象里面直接解决问题<新兴市场>你的新兴市场>应用程序(例如,需要在应用程序中代表一个任务)。当然,在本章结束时,您将能够提交数据任务实例(通过HTML表单),验证其数据,并保存到数据库。 任务类,下一步是创建和渲染实际的HTML表单。Symob娱乐下载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\控制器;使用ob娱乐下载\包\FrameworkBundle\控制器\控制器;使用Acme\TaskBundle\实体\任务;使用ob娱乐下载\组件\HttpFoundation\请求;类DefaultController扩展控制器{公共函数newAction(请求美元请求){/ /创建一个任务,给它一些虚拟的数据对于这个示例美元任务=新任务();美元任务- >setTask (“写博客”);美元任务- >setDueDate (新\ DateTime (“明天”));美元形式=美元这- >createFormBuilder (美元任务)- >add (“任务”,“文本”)- >add (“dueDate”,“日期”)- >getForm ();返回美元这- >呈现(“AcmeTaskBundle:违约:new.html.twig”,数组(“形式”= >美元形式- >createView ()));}} 提示 这个例子展示了如何构建表单直接控制器。后,在“形式”部分中,您将学习如何构建表单在一个独立的类,这是推荐为表单变得可重用。 创建一个表单需要相对较少的代码,因为Symfony2表单对象构建“形式构建器”。ob娱乐下载表单生成器的目的是允许您编写简单的形式“食谱”,并让它做所有的重型起重建筑形式。 在这个示例中,您已经添加了形式——两个字段任务和dueDate- - - - - -对应任务和dueDate的属性任务类。你也分配每一个“类型”(如。文本,日期),除此之外,确定哪些HTML表单标签(s)呈现。 ob娱乐下载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。ob娱乐下载 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 / /……使用ob娱乐下载\组件\HttpFoundation\请求;公共函数newAction(请求美元请求){/ /设置一个新的美元任务对象(删除虚拟数据)美元任务=新任务();美元形式=美元这- >createFormBuilder (美元任务)- >add (“任务”,“文本”)- >add (“dueDate”,“日期”)- >getForm ();如果(美元请求- >isMethod (“职位”)){美元形式- >bind (美元请求);如果(美元形式- >isValid ()) {/ /执行一些操作,比如保存到数据库的任务返回美元这- >重定向(美元这- >generateUrl (“task_success”));}}/ /……} 2.1 的绑定在Symfony 2.1方法更加灵活。ob娱乐下载现在接受原始客户端数据(和以前一样)或Symfony请求对象。ob娱乐下载这是首选的弃用bindRequest方法。 当提交表单时,控制器结合提交的数据形式,这意味着数据回任务和dueDate的属性美元的任务对象。这些都是通过bind ()方法。 请注意 一旦bind ()被调用时,提交的数据立即转移到底层对象。这种情况不管底层数据是有效的。 这个控制器处理形式,遵循一个共同的模式,有三个可能的路径: 最初在浏览器中加载页面时,请求方法得到形式是简单地创建和渲染; 当用户提交表单(即方法帖子)和无效数据(验证将在下一节中讨论),表单绑定,然后呈现,这一次显示所有的验证错误; 与有效数据,当用户提交表单,表单绑定,你有机会使用执行一些操作美元的任务对象(例如持久化到数据库)之前将用户重定向到其他页面(例如,一个“谢谢”或“成功”页面)。 请注意 重定向用户表单提交成功后可以防止用户能够点击“刷新”并转发数据。