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

发布于 2024-12-09 16:18:39 字数 161 浏览 0 评论 0原文

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

我浏览了这本书,它详细讨论了如何使用表单添加数据。然而,它似乎没有提到如何使用表单来编辑数据。

如何才能实现这一目标?

干杯

In this project I'm building, I have many forms to add data to the database that the site uses. Obviously, if a user add's data they must be able to edit this data (or delete it).

I've looked through the book and it talks at length about using a form to add data. However, it doesn't seem to mention how forms can be used to edit data.

How can this be achieved?

Cheers

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心碎的声音 2024-12-16 16:18:39

如果您愿意,编写没有教义的编辑操作非常容易,您应该这样做:

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() ) );}

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

我希望它有帮助!

If you want, it's quite easy to write your edit action without doctrine, you should do something like this:

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() ) );}

The only different thing of the edit action with the new action is that, instead of creating a new "element" instance, you get it from the entity manager, you could even set any arbitrary values to your element before attaching it to the form.

I hope it helps!

素染倾城色 2024-12-16 16:18:39

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

Use the generate:doctrine:crud task to generate code for editing/updating users. You'll see that the newAction and the editAction are very similar.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文