如何改变表单的动作和方法
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.3,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何改变表单的动作和方法
默认情况下,表单将通过HTTP POST请求提交到呈现表单的同一个URL。有时你想改变这些参数。您可以通过几种不同的方式来做到这一点。
如果你使用FormBuilder要构建表单,可以使用setAction ()
而且setMethod ()
:
- 框架的使用
- 独立使用
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
/ / AppBundle /控制器/ DefaultController.php名称空间AppBundle\控制器;使用ob娱乐下载\包\FrameworkBundle\控制器\控制器;使用ob娱乐下载\组件\形式\扩展\核心\类型\DateType;使用ob娱乐下载\组件\形式\扩展\核心\类型\SubmitType;使用ob娱乐下载\组件\形式\扩展\核心\类型\TextType;类DefaultController扩展控制器{公共函数newAction(){$形式=$这->createFormBuilder ($任务)->setAction ($这->generateUrl (“target_route”))->setMethod (“得到”)->add (“任务”, TextType::类)->add (“dueDate”, DateType::类)->add (“保存”, SubmitType::类)->getForm ();/ /……}}
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21
使用ob娱乐下载\组件\形式\形式;使用ob娱乐下载\组件\形式\扩展\核心\类型\DateType;使用ob娱乐下载\组件\形式\扩展\核心\类型\FormType;使用ob娱乐下载\组件\形式\扩展\核心\类型\SubmitType;使用ob娱乐下载\组件\形式\扩展\核心\类型\TextType;/ /……$formFactoryBuilder=形式::createFormFactoryBuilder ();// Form factory builder configuration…$formFactory=$formFactoryBuilder->getFormFactory ();$形式=$formFactory->createBuilder (FormType::类,$任务)->setAction (“……”)->setMethod (“得到”)->add (“任务”, TextType::类)->add (“dueDate”, DateType::类)->add (“保存”, SubmitType::类)->getForm ();
请注意
这个例子假设您已经创建了一个名为target_route
它指向处理表单的控制器。
当使用表单类型类时,你可以将动作和方法作为表单选项传递:
- 框架的使用
- 独立使用
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20
/ / AppBundle /控制器/ DefaultController.php名称空间AppBundle\控制器;使用ob娱乐下载\包\FrameworkBundle\控制器\控制器;使用AppBundle\形式\TaskType;类DefaultController扩展控制器{公共函数newAction(){/ /……$形式=$这->createForm (TaskType::类,$任务,数组(“行动”= >$这->generateUrl (“target_route”),“方法”= >“得到”));/ /……}}
12 3 4 5 6 7 8 9 10 11 12 13
使用ob娱乐下载\组件\形式\形式;使用AppBundle\形式\TaskType;$formFactoryBuilder=形式::createFormFactoryBuilder ();// Form factory builder configuration…$formFactory=$formFactoryBuilder->getFormFactory ();$形式=$formFactory->创建(TaskType::类,$任务,数组(“行动”= >“……”,“方法”= >“得到”));
方法来重写模板中的操作和方法形式()
或者是form_start ()
辅助功能:
- 嫩枝
- PHP
1 2
{# app /资源/视图/ / new.html违约。树枝#}{{form_start(形式,{“行动”:路径(“target_route”)、“法”:“得到”})}}
1 2 3 4 5 6 7
<!——app/Resources/views/default/new.html.php——> .php<?php回声$视图[“形式”]->开始($形式,数组(// path()方法在Symfony 2.8中引入。ob娱乐下载在2.8之前,//你必须使用generate()。“行动”= >$视图[“路由器”]->路径(“target_route”),“方法”= >“得到”,))? >
请注意
如果表单的方法不是GET或POST,而是PUT、PATCH或DELETE, Symfony将插入一个包含名称的隐藏字段ob娱乐下载_method
它存储这个方法。表单将在正常的POST请求中提交,但是Symfony的路由器能够检测到ob娱乐下载_method
参数,并将其解释为PUT, PATCH或DELETE请求。看到FrameworkBundle配置(“框架”)选择。
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。