Estoy tratando de trabajar en un sitio web existente y he encontrado un error, pero no estoy seguro de por qué es un error o cómo solucionarlo.Los elementos de la casilla de verificación HTML solo se envían si están marcados?
El sitio web básicamente enumera algunas propiedades comerciales que se alquilan en una ciudad. Hay una clase que toma los listados de la base de datos y crea un objeto de cada uno. En cada objeto hay una matriz de imágenes que están asociadas con esa propiedad.
Cuando el usuario edita una lista, obtiene una página de edición que tiene una lista de las imágenes y una casilla de verificación "eliminar" junto a ellas. Todas las casillas de verificación tienen el mismo nombre, por lo que cuando se vuelven a enviar al servidor, la aplicación obtiene una matriz de las imágenes que se eliminarán.
Lo que se supone que sucede, es que la aplicación tiene esta matriz de valores on/off (donde on = delete) y el índice de cada valor en la matriz corresponde al índice de una imagen en el objeto de la lista cuando uno de los valores está "on", el nombre de archivo en la matriz de imágenes correspondiente a ese valor "on" se elimina del sistema de archivos, y esa imagen se elimina de la base de datos.
Sin embargo, cuando se envía el formulario, la aplicación obtiene una matriz indexada en 0 de solo las casillas marcadas. Así que si me puse tres imágenes arbitrarias para su eliminación, la aplicación tendría
Array { [0] => "on", [1] => "on", [2] => "on" }
Obviamente, esto no funciona, se eliminarán las 3 primeras imágenes en la lista independientemente de qué casillas de verificación se establecen.
¿Cómo puedo solucionar esto? Me gustaría evitar nombrar cada casilla de verificación (delete_1
, delete_2
, delete_3
, etc.) ya que el sistema ya está diseñado para funcionar con todas las casillas que tienen el mismo nombre. ¿Hay alguna manera de forzar que todas las casillas de verificación se envíen con "activado" o "desactivado"?
Awesome, no sabía que podía hacer ese. Muchas gracias (lo aceptaré cuando esté permitido) –
omg, es una solución terrible y definitivamente no es una respuesta a la pregunta. – zerkms
@Steve Quería evitar nombrarlos de manera diferente, ya que eso tendría que cambiar el comportamiento del back-end. Sin embargo, no me di cuenta de que podría enviar un valor que no sea "activado" ni "desactivado"; esto requeriría cambios mínimos –