¿Cómo eliminar una entidad de una plantilla con una lista de entidades (CRUD)?
He generado el CRUD de una entidad, obteniendo las siguientes acciones predeterminadas:
indexAction (): Enumera todas las entidades.showAction ($ id): encuentra (por ID) y muestra una entidad.deleteAction ($ id): borra una entidad.otras acciones.Por lo tanto, he visto que solo puedo eliminar una entidad dentro de las acciones que usan param $ id (por ejemplo, showAction ($ id)) peroQuiero eliminar una entidad dentro de la plantilla indexAction porque guardo un paso para los usuarios.
El deleteAction necesita una solicitud, una identificación y utiliza el método POST.
Estaba tratando de codificar algo como:
<a href="{{ path('entity_delete', { 'id': entity.id }) }}" class="btn">
<img src="{{ asset('bundles/acme/images/delete.png') }}" ... />
</a>
Cuando ejecuto la acción, me sale el siguiente error:
No se encontró una ruta para "GET / acme / something / 4 / delete": Método no permitido (Permitir: POST, BORRAR)
Esta respuesta es clara y es lo que esperaba, así que intenté hacer algo similar pero utilizando un formulario. Algo como esto:
<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>
Pero la linea{{ form_widget(delete_form) }}
es un problema porque elindexAction()
No tiene ningún parámetro y necesita este código:
$deleteForm = $this->createDeleteForm($id);
return $this->render('AcmeBundle:Demo:index.html.twig', array(
'entities' => $entities,
'delete_form' => $deleteForm->createView(),
));
Como puede ver, el parámetro $ id es obligatorio para el métodocreateDeleteForm($id)
pero no puedo conseguirlo deindexAction()
.
¿Cuál es la mejor manera de resolver este problema?