php 多个表单,php – 如何处理多个页面上使用的表单?

我有一个我需要在多个页面上使用的表单:

调节器

$emailForm = $this->get('form.factory')->createNamedBuilder('form', 'email_form')

->add('email', 'email')

->add('subject', 'text')

->add('body', 'textarea')

->getForm();

$request = $this->get('request');

if ($request->getMethod() == 'POST' && $request->request->has('email_form') ) {

$emailForm->bindRequest($request);

if ($emailForm->isValid()) {

// do stuff ...

$this->get('session')->setFlash('email_sent', "Woey, mail sent successfully!");

// Redirect on the same url to prevent double posts

return $this->redirect($this->generateUrl($this->getRequest()->attributes->get('_route')));

}

}

return $this->render('Bundle:Form:index.html.twig', array('email_form' => $emailForm->createView()));

模板

{% if app.session.getFlash('email_sent') %}

{{ app.session.getFlash('email_sent') }}

{% endif %}

{{ form_widget(email_form) }}

它实际上只是标准的Symfony2形式,几乎与教程一样.

我无法想象如何在不重复自己(太多)的情况下在多个页面上(在多个控制器操作中)有效地使用它.到目前为止我试过:

>将逻辑放入Base控制器,它是我希望拥有此表单的每个控制器的父控制器.这种方法存在两个问题:

>我无法想象如何正确地重定向到同一页面

>我不得不在每个动作中调用父方法,这不是一个真正的问题,但我想必须有一些更优雅的方式

那么,这种形式的常见方法是什么?

编辑:

我正在寻找一个无脚本解决方案.

解决方法:

我最终在我需要的每个页面上使用嵌入式控制器,发布到不同的URL并使用referrer保存cookie.然后我验证表单,保存带结果的cookie,重定向回引用并呈现结果(错误,谢谢消息……).当您处理必须考虑禁用Javascript的场景时,这似乎是最佳选择.对于用户使用AJAX发布的情况,您可以使用简单条件轻松禁用冗余cookie / flash会话的创建.

标签:php,symfony

来源: https://codeday.me/bug/20190626/1294750.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值