我有一个页面(让我们称之为编辑页面)有两种形式 - 第一种用于更新数据库中一个表中的信息,它有一个提交按钮“保存”,另一个用于另一个表中的持久信息它有自己的按钮“添加”和一个链接 - “删除”删除现有的行。无论您按三,保存,添加或删除,您都应该停留在同一页面。能否请您告诉我哪种方式最好:
当你按删除时,我正在路由到另一个调用deleteController的url,在该主体中,它重定向回到上一页(编辑页面)
我无法想出更好的东西,因为删除是一个链接。请随意提出您的建议,并告诉我的方式是非常愚蠢还是可以接受。
如何管理这两种形式?
起初我认为一个控制器可以管理这两种形式,但是存在一个问题 - 我不知道控制器如何确切地确定按下哪个按钮(保存或添加)来做正确的事情。它可以每次更新两个表,就像按下两个按钮一样,但我认为这是不合理的,因为大多数时候只有一个表会有变化。
另一个想法是重复删除 - 有两个不同的控制器,可以做一些操作(更新和持久),然后重定向到编辑页面,我瞄准用户感觉永远不会离开开头页面的网址(编辑页面)。
管理此任务的最佳方法是什么?
答案 0 :(得分:2)
SensioGeneratorBundle
可以生成CRUD表单和控制器。它在Symfony标准版中提供。你应该看看它。生成的代码很容易定制,并且设计得很好。
您做出了正确的选择。您也可以将删除按钮放入包含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'));
}
您可以设置不同的method
(版本:POST
,创建:PUT
)。
您可以设置不同的action
,然后执行重定向。