Php 使用Symfony创建联系人表单
我正在尝试使用教程使用Symfony 2.5创建表单,但本教程使用的是Symfony的旧版本。我可以让表单显示并创建实体,但我现在正在提交表单。以下是教程中的代码,此代码位于默认控制器contactAction中 我主要关注的是上面代码的以下部分Php 使用Symfony创建联系人表单,php,forms,symfony,symfony-2.5,Php,Forms,Symfony,Symfony 2.5,我正在尝试使用教程使用Symfony 2.5创建表单,但本教程使用的是Symfony的旧版本。我可以让表单显示并创建实体,但我现在正在提交表单。以下是教程中的代码,此代码位于默认控制器contactAction中 我主要关注的是上面代码的以下部分 $request = $this->getRequest(); if ($request->getMethod() == 'POST') { $form->bindRequest($request); 正如您所注意到的,它使
$request = $this->getRequest();
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
正如您所注意到的,它使用的是已经被删除的getRequest,然后我的IDE告诉我找不到buildRequest方法
如果有人打电话给我,将我推向转换symfony verion 2.5 contactAction的正确道路,我将不胜感激。声明如下:
public function contactAction(Request $request)
{
...
}
和进口:
use Symfony\Component\HttpFoundation\Request;
您的操作中将包含请求,因此您可以删除此行:
$request = $this->getRequest();
嗨,这里有一些不推荐的电话,我真的建议你去Symfony的食谱。但不管怎样,下面的内容会有所帮助
namespace myproject/mybundle/controller;
use Symfony\Component\HttpFoundation\Request;
Class Act //that is me ;) {
/**
* @Route("/contact", name="_lalalalala")
* @Template()
*/
public function contactAction(Request $request){
$enquiry = new Enquiry();
$form = $this->createForm(new EnquiryType(), $enquiry);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($enquiry);
$em->flush();
return $this->redirect($this->generateUrl('BloggerBlogBundle_contact'));
}
return ['form' => $form->createView()];
}
}
通过使用symfony服务容器注入表单,可以进一步缩短此代码。我建议你读这本书,它非常棒。因为您可以在任何地方重复使用表单:您可以将getMethod更改为isMethod-like
然后您可以使用submit like将请求数据提交到表单
或者,您可以使用一次性处理上述两种方法的方法,然后继续执行其他操作,如
$form->handleRequest($request);
if ($form->isValid())
.. etc
要检索请求对象,有两种可能。要么让 。。。或者从容器中获取请求对象
$request = $this->get('request');
为了将请求绑定到表单,请执行以下操作:
直接将请求传递给submit仍然有效,但已被弃用,并将在Symfony 3.0中删除。你应该改用这个方法
这样,请求绑定部分看起来类似于:
if ($request->isMethod('POST')) {
$form->handleRequest($request);
if ($form->isValid()) {
// do something
}
}
提供了几乎相同的情况。答案的请求部分是正确的。只有@MatthewThomas表明您不再需要检查POST。但是,他的解决方案使用了注释,这可能会让您感到困惑。感谢大家的反馈,我正在查看答案并试图理解它们,因为我正在创建表单,但它还没有做任何事情,所以我还想知道如何检查提交的表单数据?当使用普通php打印时$\u POST;如果要显示表单数据,我如何使用symfony查看它?是的,使用请求对象,比如$request->get'name of form or field',或者更好的是使用表单对象$form->getData;在表单提交中,但你真的不需要对直接实体执行此操作,除非你说发送电子邮件并希望从请求标题获得特定数据谢谢:StackOverFlow rockshow我可以检查提交的变量吗?当使用普通php打印时$\u POST;将显示表单数据,我如何查看使用symfony作为表单当前没有做任何事情,我想检查它是否正在提交数据如果您想打印POST变量,请执行以下操作:var_dump$request->request->all;
$form->handleRequest($request);
if ($form->isValid())
.. etc
public function contactAction(Request $request)
{
// ...
}
$request = $this->get('request');
if ($request->isMethod('POST')) {
$form->handleRequest($request);
if ($form->isValid()) {
// do something
}
}