12.表单处理
来源:互联网 发布:阿里云别名解析 编辑:程序博客网 时间:2024/05/29 17:34
1.构成表单元素
2.创建一个基本表单
public function indexAction() { $user = new User(); $form = $this->createFormBuilder($user) ->add('email') ->add('password') ->add('age') ->add('submit','submit') ->getForm(); $form->handleRequest($this->getRequest()); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($user); $em->flush(); } $content = 'test'; return array('content'=>$content, 'form'=>$form->createView()); }
$user = new User(); $form = $this->createFormBuilder($user) ->add('email','email',array('label'=>'用户名')) ->add('password') ->add('age') ->add('submit','submit') ->getForm(); //$form = $this->createForm('text'); $form->handleRequest($this->getRequest()); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($user); $em->flush(); }
https://symfony.com/doc/2.7/reference/forms/types/entity.html#basic-usage
http://symfony.com/doc/current/forms.html
https://symfony.com/doc/current/form/form_collections.html
在表单中嵌入另外一个entity fields
$user = new User(); $bulder = $this->createFormBuilder($user); $form = $bulder->add('email','email',array('label'=>'用户名')) ->add('password') ->add('age') ->add( $bulder->create('profile','form') ->add('mobile_number','integer') ) ->add('submit','submit') ->getForm(); //$form = $this->createForm('text'); $form->handleRequest($this->getRequest()); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($user); $em->flush(); } $content = 'test'; return array('content'=>$content, 'form'=>$form->createView());
3.修改表单样式
{{ form(form) }} //等同于下面3行{{ form_start(form) }}{{ form_widget(form) }}{{ form_end(form) }}{{ form_start(form) }} //等同于上面{{ form_label(form.email) }}{{ form_errors(form.email) }}{{ form_widget(form.email) }}{{ form_label(form.password) }}{{ form_errors(form.password) }}{{ form_widget(form.password) }}...{{ form_end(form) }}
4.表单提交
//会帮我们判断是否是 post 提交 $form->handleRequest($this->getRequest());// $form->submit($data); //手动提交
5.表单验证
阻止html5验证:
https://symfony.com/doc/master/reference/constraints.html#main
$user = new User(); $bulder = $this->createFormBuilder($user); $form = $bulder->add('email','email',array('label'=>'用户名')) ->add('password') ->add('age','integer',array('constraints'=>new GreaterThanOrEqual(18))) ->add('submit','submit') ->getForm();
$user = new User(); $bulder = $this->createFormBuilder($user); $form = $bulder->add('email','email',array('label'=>'用户名')) ->add('password') ->add('age','integer',array('constraints'=>array(new GreaterThanOrEqual(18),new LessThanOrEqual(20)))) ->add('submit','submit') ->getForm();大于18 小于20
6.处理通过验证的表单数据
$user = new User(); $bulder = $this->createFormBuilder($user); $form = $bulder->add('email','email',array('label'=>'用户名')) ->add('password') ->add('age','integer',array('constraints'=>array(new GreaterThanOrEqual(18),new LessThanOrEqual(20)))) ->add('submit','submit') ->add('submit_and_addnew','submit') ->getForm(); $form->handleRequest($this->getRequest()); if ($form->isValid()) { $form->get('email')->isValid();//单独判断字段 //这里可以对数据进行处理,处理完再放入数据库 $click_action = $form->get('submit_and_addnew')->isClicked(); if ($click_action) { echo 'submit_and_addnew'; } else { echo 'submit'; } $em = $this->getDoctrine()->getManager(); $em->persist($user); $em->flush(); }
总结:
CSRF 验证:
会在session 中做验证;可以在 配置文件中关闭
$user = new User(); $bulder = $this->createFormBuilder($user); $form = $bulder->setAction($this->generateUrl('page') //设置 提交的url ->setMethod('GET') //设置method ->add('email','email',array('label'=>'用户名')) ->add('password') ->add('age','integer',array('constraints'=>array(new GreaterThanOrEqual(18),new LessThanOrEqual(20)))) ->add('submit','submit') ->add('submit_and_addnew','submit') ->add('file','file') ->getForm(); $form->handleRequest($this->getRequest()); if ($form->isValid()) { $form->get('file')->getData()->move($dir.$filename);//从临时文件夹放到指定目录 $user->setAvatar($dir.$filename); $form->get('email')->isValid();//单独判断字段 //这里可以对数据进行处理,处理完再放入数据库 $click_action = $form->get('submit_and_addnew')->isClicked(); if ($click_action) { echo 'submit_and_addnew'; } else { echo 'submit'; } $em = $this->getDoctrine()->getManager(); $em->persist($user); $em->flush(); }
0 0
- 12.表单处理
- 表单处理
- 表单处理
- 表单处理
- 表单处理
- 表单处理
- 表单处理
- Django 处理处理表单
- php表单01-表单处理
- [表单] -- php表单过期处理
- 四、处理表单数据
- JSP 处理表单数据
- 第十四课:处理表单
- 处理表单数据
- Delphi处理表单实例
- 1.2.2 表单处理
- jquery 表单处理
- jsp处理表单参数
- 准确率(precision)和召回率(recall)
- Srping Data Redis 四:Srping Data Redis 入门
- 入职感想
- 操作系统的优先读者和优先写着的读者/写着问题
- 在HDFS中合并文件
- 12.表单处理
- 解决Virtualbox的容量不够的问题
- 文章标题
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- 获取map的key和value
- [从头学绘画] 第08节 二十四式太极拳(7-12)
- 二叉排序树
- js 事件冒泡 事件代理 事件捕捉 this指针 bind this
- JDBC入门介绍第一章