我正在学习Symfony2 Framework,开始我发现本教程:Tutorial。在我遇到这个问题之前,一切都进展顺利:
Tutorial Part2中的。在控制器部分中创建表单时,我发现不推荐使用getRequest()
函数,并且在类中找不到bindRequest()
。
这两个让我回到教程和学习进度。我还有其他方法可以在不使用这些函数的情况下构造这个控制器,或者还有其他功能可以完全相同。
答案 0 :(得分:4)
请参阅Symfony文档的part。它表明您应该使用handleRequest
,如下所示:
// Top of page:
use Symfony\Component\HttpFoundation\Request;
...
// controller action
public function newAction(Request $request)
{
$form = $this->createFormBuilder()
// ...
->getForm();
$form->handleRequest($request);
if ($form->isValid()) {
// perform some action...
return $this->redirect($this->generateUrl('task_success'));
}
return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
'form' => $form->createView(),
));
}
您可能还会发现此链接很有用:Handling Form Submissions。
作为控制器参数的请求
首先以这种方式获取请求对象可能有点令人困惑,引用文档:
如果您需要读取查询参数,获取请求标头或 可以访问上传的文件?所有这些信息都存储在 Symfony的Request对象。要在控制器中获取它,只需将其添加为 一个参数和类型提示它与Request类:
use Symfony\Component\HttpFoundation\Request;
public function indexAction($firstName, $lastName, Request $request)
{
$page = $request->query->get('page', 1);
// ...
}
此信息可在Controller Documentation上找到。