在Symfony2中显示数据库中的数据到表单

时间:2011-10-12 09:23:08

标签: forms doctrine-orm symfony

在我正在构建的这个项目中,我有许多表单可以将数据添加到站点使用的数据库中。显然,如果用户添加数据,他们必须能够编辑这些数据(或删除它)。

我仔细阅读了本书,并详细讨论了使用表单添加数据的问题。但是,它似乎没有提到如何使用表单来编辑数据。

如何实现这一目标?

干杯

2 个答案:

答案 0 :(得分:3)

如果你愿意,你可以很容易地编写没有教条的编辑动作,你应该这样做:

public function editAction( $id ) {
$em = $this->getDoctrine()->getEntityManager();
$repository = $em->getRepository('YourBundle:YourEntity');
$element = $repository->find( $id );
if ( false !== is_null( $element ) ) {
    throw $this->createNotFoundException( 'Couldn\'t find element ' . $id . '!');
}
$form = $this->createForm( new YourFormType(), $element );
$request = $this->getRequest();
if ( $request->getMethod() == 'POST' ) {
    $form->bindRequest( $request );
    if ( $form->isValid() ) {
        $em->persist( $element );
        $em->flush();
        $this->get( 'session' )->setFlash( 'system-message', 'Element Updated!' );
        return $this->redirect( $this->generateUrl( 'Your_route' ) );
    }
}
return $this->render('YourBundle:YourView:your_template.html.twig', array( 'element' => $element, 'form' => $form->createView() ) );}

使用 new 操作的编辑操作的唯一不同之处在于,您可以从实体管理器获取它,而不是创建新的“元素”实例,在将元素附加到表单之前,您甚至可以为元素设置任意值。

我希望它有所帮助!

答案 1 :(得分:1)

使用generate:doctrine:crud任务生成用于编辑/更新用户的代码。你会看到newAction和editAction非常相似。