我需要在视图中创建一个deleteForm,所以我这样做:
/**
* Show created bank account
*
* @Route("/{account_id}", name="wba_show")
* @Method("GET")
*/
public function showAction($account_id) {
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('BankBundle:Account')->find($account_id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find Account entity.');
}
$deleteForm = $this->createDeleteForm($account_id);
return array('entity' => $entity, 'delete_form' => $deleteForm->createView());
}
但是我收到了这个错误:
FatalErrorException:错误:调用未定义的方法 BankBundle \ Controller \ WController :: createDeleteForm()in /var/www/html/src/BankBundle/Controller/WController.php第66行
这种方法有什么问题?我需要使用一些东西来创建表单吗?
解决方案
我找到了解决方案,因为createDeleteForm()
不是Symfony2方法,而我错误地从另一个代码中获取它,所以我以这种方式创建函数:
private function createDeleteForm($account_id) {
return $this->createFormBuilder(array('account_id' => $id))->add('account_id', 'hidden')->getForm();
}
瞧瞧问题消失!!
答案 0 :(得分:1)
您需要创建一个这样的表单:
$this->createForm(new CreateDeleteType());
当然,您还需要创建此表单:
class CreateDeleteType extends AbstractType {
除此之外,您的错误消息非常清楚。您呼叫的method
(createDeleteForm
)不存在。请注意,$this
是指您当前的控制器上下文,而不是表单上下文。详细了解forms in the official docs。