2

我有一个页面(我们称之为编辑页面)有两个表单 - 第一个用于更新数据库中一个表中的信息,它有一个提交按钮“保存”,另一个用于在另一个表中保存信息,它有它自己的按钮“添加”和一个链接 - “删除”来删除现有的行。无论您按下三个保存、添加或删除中的哪一个,您都应该保持在同一页面上。您能否建议我哪种方法是制作东西的最佳方法:

  1. 当您按删除时,我正在路由到另一个调用 deleteController 的 url,它在其中重定向回上一页(编辑页面)

    我想不出更好的办法,因为 Delete 是一个链接。随意提出您的建议,请告诉我的方式是非常愚蠢还是可以接受的。

  2. 如何管理这两种形式?

    1. 起初我认为一个控制器可以管理这两种表单,但有一个问题 - 我不知道控制器如何准确识别按下了哪个按钮(保存或添加)来做正确的事情。当两个按钮同时按下时,它可以每次更新两个表,但我认为这是不合理的,因为大多数时候只有一个表会发生变化。

    2. 另一个想法是对 Delete 重复相同的操作 - 让两个不同的控制器执行一些操作(更新和持久化),然后重定向到编辑页面,我的目标是让用户感觉永远不会离开起始页面的 url (编辑页面)。

管理此任务的最佳方法是什么?

4

1 回答 1

2

SensioGeneratorBundle可以生成 CRUD 表单和控制器。它包含在 Symfony 标准版中。你应该看看它。生成的代码很容易定制并且设计良好。


  1. 你做了正确的选择。您还可以将删除按钮放入一个表单中,method="delete"并在您的控制器中执行以下操作:

    /**
     * @Route("/{id}")
     * @Method("DELETE")
     * @ParamConverter("entity", class="MyAdminBundle:MyEntity")
     */
    public function deleteAction(MyEntity $entity)
    {
        // Do deletion
        // ...
    
        // Do redirection
        $this->redirect($this->generateUrl('list'));
    }
    
  2. 您可以设置不同的method(版本:POST,创建:)PUT
    您可以设置不同action,然后进行重定向。

于 2012-08-07T14:39:09.693 回答