解释:
我已经生成了一个实体的 CRUD,得到了以下默认操作:
- indexAction():列出所有实体。
- showAction($id):查找(按 ID)并显示一个实体。
- deleteAction($id):删除一个实体。
- 另一个动作。
因此,我看到我只能删除使用参数 $id 的操作中的实体(例如: showAction($id) ),但我想删除 indexAction 模板中的实体,因为我向用户保存了一个步骤。
deleteAction 需要一个请求、一个 ID 并使用 POST 方法。
我试图编写如下代码:
<a href="{{ path('entity_delete', { 'id': entity.id }) }}" class="btn">
<img src="{{ asset('bundles/acme/images/delete.png') }}" ... />
</a>
当我执行操作时,我收到以下错误:
找不到“GET /acme/something/4/delete”的路由:不允许方法(允许:POST、DELETE)
这个回应很清楚,这正是我所期望的,所以我尝试做类似的事情,但使用了一个表格。像这样的东西:
<form id="formDelete" action="{{ path('entity_delete', { 'id': entity.id }) }}" method="post">
<input type="hidden" name="_method" value="DELETE" />
{{ form_widget(delete_form) }}
<a href="{{ url('entity_delete') }}" class="btn" onclick="document.getElementById('formDelete').submit();">
<img src="{{ asset('bundles/acme/images/delete.png') }}" ... />
</a>
</form>
但是这条线{{ form_widget(delete_form) }}
是一个问题,因为indexAction()
它没有任何参数,它需要这个代码:
$deleteForm = $this->createDeleteForm($id);
return $this->render('AcmeBundle:Demo:index.html.twig', array(
'entities' => $entities,
'delete_form' => $deleteForm->createView(),
));
如您所见, $id 参数对于该方法是强制性的,createDeleteForm($id)
但我无法从indexAction()
.
问题:
解决此问题的最佳方法是什么?