如何改变一个表单的动作和方法
编辑该页面警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.3,不再维护。
读这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.3(当前的稳定版本)。
如何改变一个表单的动作和方法
默认情况下,表单将提交通过一个HTTP POST请求的URL相同形式呈现。有时你想要改变这些参数。你可以在几个不同的方式这样做。
如果你使用FormBuilder建立表单,您可以使用setAction ()
和setMethod ()
:
1 2 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\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\控制器;使用欧宝娱乐app下载地址\组件\形式\扩展\核心\类型\DateType;使用欧宝娱乐app下载地址\组件\形式\扩展\核心\类型\SubmitType;使用欧宝娱乐app下载地址\组件\形式\扩展\核心\类型\TextType;类DefaultController扩展控制器{公共函数newAction(){美元形式=美元这- >createFormBuilder (美元任务)- >setAction (美元这- >generateUrl (“target_route”))- >setMethod (“得到”)- >add (“任务”,TextType::类)- >add (“dueDate”,DateType::类)- >add (“保存”,SubmitType::类)- >getForm ();/ /……}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
使用欧宝娱乐app下载地址\组件\形式\形式;使用欧宝娱乐app下载地址\组件\形式\扩展\核心\类型\DateType;使用欧宝娱乐app下载地址\组件\形式\扩展\核心\类型\FormType;使用欧宝娱乐app下载地址\组件\形式\扩展\核心\类型\SubmitType;使用欧宝娱乐app下载地址\组件\形式\扩展\核心\类型\TextType;/ /……美元formFactoryBuilder=形式::createFormFactoryBuilder ();/ /工厂建造形式配置……美元formFactory=美元formFactoryBuilder- >getFormFactory ();美元形式=美元formFactory- >createBuilder (FormType::类,美元任务)- >setAction (“……”)- >setMethod (“得到”)- >add (“任务”,TextType::类)- >add (“dueDate”,DateType::类)- >add (“保存”,SubmitType::类)- >getForm ();
请注意
这个示例假设您已经创建了一个路线target_route
指向控制器处理表单。
当使用一个表单类型类,您可以通过行动和方法形式选择:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/ / AppBundle /控制器/ DefaultController.php名称空间AppBundle\控制器;使用欧宝娱乐app下载地址\包\FrameworkBundle\控制器\控制器;使用AppBundle\形式\TaskType;类DefaultController扩展控制器{公共函数newAction(){/ /……美元形式=美元这- >createForm (TaskType::类,美元任务,数组(“行动”= >美元这- >generateUrl (“target_route”),“方法”= >“得到”));/ /……}}
1 2 3 4 5 6 7 8 9 10 11 12 13
使用欧宝娱乐app下载地址\组件\形式\形式;使用AppBundle\形式\TaskType;美元formFactoryBuilder=形式::createFormFactoryBuilder ();/ /工厂建造形式配置……美元formFactory=美元formFactoryBuilder- >getFormFactory ();美元形式=美元formFactory- >创建(TaskType::类,美元任务,数组(“行动”= >“……”,“方法”= >“得到”));
最后,您可以覆盖行动和方法通过他们的模板形式()
或者是form_start ()
辅助功能:
1 2
{# app /资源/视图/ / new.html违约。树枝#}{{form_start(形式,{“行动”:路径(“target_route”)、“法”:“得到”})}}
1 2 3 4 5 6 7
< !——app /资源/视图/ / new.html违约。php - - >< ? php回声美元视图(“形式”]- >开始(美元形式,数组(/ /路径()方法是在Symfony 2.8中引入的。欧宝娱乐app下载地址在2.8之前,/ /你必须使用产生()。“行动”= >美元视图(“路由器”]- >路径(“target_route”),“方法”= >“得到”,))? >
请注意
如果表单的方法不是GET或POST,但把补丁或删除,Symfony会插入一个隐藏字段的名称欧宝娱乐app下载地址_method
存储这个方法。表单将提交在一个正常的POST请求,但Symfony的路由器能够检测欧宝娱乐app下载地址_method
参数,将它视为一个补丁或删除请求。看到FrameworkBundle配置(“框架”)选择。
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。