php - Controller 和 URL 的设计思路 - Symfony2

标签 php symfony

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

  1. 当您按删除键时,我将路由到另一个 url,该 URL 会调用 deleteController,并在其中将其重定向回上一页(编辑页面)

    我想不出更好的办法,因为“删除”是一个链接。请随意提出您的建议,并请告诉我的方法是否非常愚蠢或可以接受。

  2. 如何管理这两种表单?

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

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

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

最佳答案

SensioGeneratorBundle可以生成CRUD表单和 Controller 。它包含在 Symfony 标准版中。你应该看看它。生成的代码易于定制并且经过精心设计。


  1. 您的选择是正确的。您还可以使用 method="delete" 将删除按钮放入表单中,并在 Controller 中执行类似以下操作:

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

关于php - Controller 和 URL 的设计思路 - Symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11844645/

相关文章:

php - jQuery 切换功能在 AJAX HTML 数据加载后停止工作

php - 交响乐 : Detached entity cannot be removed in test suite w/phpunit

邮件中的 Symfony FOSUserBundle https

php - iPhone lighttpd : where is the localhost folder

php - 使用 basename(__FILE__) 确定页面名称以更改标题不起作用

php - 我可以在 PHP 中混合使用 MySQL API 吗?

php - curl 的多个请求(不是 'multi-threaded')

php - 如何使用带有主义和symfony2的自定义枚举数据类型将枚举值保存到数据库?

forms - 复选框类型的 Symfony 表单字段在包含在请求中时始终被解释为 true

symfony - 订阅者调用两次 symfony