调用未定义的方法无法创建createDeleteForm

时间:2013-08-02 13:51:53

标签: symfony symfony-forms symfony-2.3

我需要在视图中创建一个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();
}

瞧瞧问题消失!!

1 个答案:

答案 0 :(得分:1)

您需要创建一个这样的表单:

$this->createForm(new CreateDeleteType());

当然,您还需要创建此表单:

class CreateDeleteType extends AbstractType {

除此之外,您的错误消息非常清楚。您呼叫的methodcreateDeleteForm)不存在。请注意,$this是指您当前的控制器上下文,而不是表单上下文。详细了解forms in the official docs