用户将使用symfony 2框架构建的表单与抽象类型:
相加<?php
$form = $this->createForm(new MyAbstractType(), new MyEntity());
我在动作中收到此帖子请求:
public function receiveFormRequestAction(Request $request){
//How do I get the abstract type from the request?
}
我需要能够仅使用请求中的信息来创建表单上使用的AbstractType。
感谢。
编辑:
很抱歉,如果我不够清楚的话。在方法“recieveFormRequestAction”我不知道我将得到什么抽象类型,所以我不能将表单直接绑定到MyAbstractType。
理论上,此操作可以接收任何AbastractType并绑定它。
答案 0 :(得分:1)
是
喜欢这样:
// first, create the very same form
$form = $this->createForm(new MyAbstractType(), new MyEntity());
// bind the form with your request
$form->bind($request);
// Optional step : validate the form
if ($form->isValid()) {
// your object is ready, get it like this:
$object = $form->getData();
} else {
// handle the validation errors.
}
答案 1 :(得分:0)
您需要将Request对象绑定到表单。
$form->bind($request);
然后您可以运行$form->isValid()
和$form->getData()
等内容。
答案 2 :(得分:0)
我最终这样做了:
我的表单上的方法getName()返回的名称与Form类名称
完全相同Class MyAbstractType extends AbstractType
[...]
public function getName(){
return "MyAbstractType";
}
现在我可以使用参数键上的哈希来获取类型
public function myAction(Request $request){
$parameterKeys = $request->request->keys();
$formName = $parameterKeys[0];
丑陋,但我需要一个快速的解决方案。直到有一个更清洁的,我接受这个。