是否有必要在显示创建表单的操作中实例化实体?

时间:2014-01-15 14:33:58

标签: php symfony crud

我是Symfony2的新手。我试图理解CRUD生成的代码的一部分。

在下面的代码中,我不明白为什么我们创建一个实体(new Image())。当我var_dump时,里面的一切都是NULL。那它的作用是什么?为什么要在行动的回归中发送它?

public function newAction()
{
    $entity = new Image();
    $form   = $this->createForm(new ImageType(), $entity);
    var_dump($entity);
    return array(
        'entity' => $entity,
        'form'   => $form->createView(),
    );
}

恕我直言,其他行动(创造)中的实例是合乎逻辑的。您的解释受到高度赞赏。

 public function createAction(Request $request)
{
    $entity  = new Image();
    $form = $this->createForm(new ImageType(), $entity);
    $form->bind($request);

    if ($form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $em->persist($entity);
        $em->flush();

        return $this->redirect($this->generateUrl('image_show', array('id' => $entity->getId())));
    }

    return array(
        'entity' => $entity,
        'form'   => $form->createView(),
    );
}

1 个答案:

答案 0 :(得分:2)

createForm() helper的第二个参数应包含表单的初始数据。 它可能是一个实体,但也可能是一个数组。

除非您需要在模板中使用实体,否则您不需要从操作中返回实体。

createForm()签名,

public Form createForm(string|FormTypeInterface $type, mixed $data = null, array $options = array())

其中,

mixed  |  $data  |  The initial data for the form