我的控制器中有这个代码:
/**
* Displays a form to create a new Bank Account
*
* @Route("/account/new", name="wba_new")
* @Method("GET")
* @Template("BankBundle:BankAccount:new.html.twig")
*/
public function newBankAccountAction() {
$entity = new Account();
$form = $this->createForm(new AccountType(), $entity);
return array('entity' => $entity, 'form' => $form->createView());
}
/**
* Handle bank account creation
*
* @Route("/", name="wba_create")
* @Method("POST")
*/
public function createAction(Request $request) {
$entity = new Account();
$form = $this->createForm(new AccountType(), $entity);
$form->handleRequest($request);
print_r($request);
exit;
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('wba_list'));
}
return array('entity' => $entity, 'form' => $form->createView());
}
当我致电/account/new
时,表单显示没有任何问题,操作转到/
但是当我发送表单时出现此错误:
控制器必须返回响应(Array(entity => 对象(BankBundle \ Entity \ AccountType),form => 对象(Symfony \ Component \ Form \ FormView))给出)。
为什么呢?我的代码出了什么问题?
更新
我发现问题所在,我在两个不同的控制器中有两条具有相同定义的路径:
/**
* Handle bank account creation
*
* @Route("/", name="wba_create")
* @Method("POST")
*/
修复后问题解决了吗
答案 0 :(得分:0)
在再次阅读完代码并尝试找到我的错误之后,我终于找到了。我有两个控制器:AccountController.php
和TestController.php
,我已经定义了(我的错误,因为我只是将AccountController.php
复制到TestController.php
)与此函数中相同的路径: / p>
/**
* Handle bank account creation
*
* @Route("/", name="wba_create")
* @Method("POST")
*/
public function createAction(Request $request) {
...
}
出于这个原因,我很难,这就是Symfony试图调用路由wba_create
时数据丢失的原因。我没有添加注释@Template("")
。这是解决方案,希望适用于任何运行相同问题的
答案 1 :(得分:0)
/**
* Displays a form to create a new Bank Account
*
* @Route("/account/new", name="wba_new")
*/
public function newBankAccountAction()
{
$entity = new Account();
$form = $this->createForm(new AccountType(), $entity);
return $this->render('BankBundle:BankAccount:new.html.twig',array(
'entity' => $entity,
'form' => $form->createView(),
));
}