Ich versuche, an einer bestehenden Website zu arbeiten, und habe einen Fehler gefunden, aber ich bin mir nicht sicher, warum es ein Fehler ist oder wie man ihn umgehen kann.
Die Website listet im Wesentlichen einige Gewerbeimmobilien auf, die in einer Stadt zur Vermietung stehen. Es gibt eine Klasse, die die Angebote aus der Datenbank abruft und aus jedem ein Objekt erstellt. In jedem Objekt befindet sich ein Array von Bildern, die mit dieser Eigenschaft verbunden sind.
Wenn der Benutzer einen Eintrag bearbeitet, erhält er eine Bearbeitungsseite mit einer Liste der Bilder und einem Kontrollkästchen "Löschen" neben den Bildern. Die Kontrollkästchen haben alle denselben Namen, so dass die App beim Zurücksenden an den Server ein Array der zu löschenden Bilder erhält.
Was soll passieren, ist, dass die App dieses Array von on/off-Werten hat (wobei on = delete), und der Index jedes Wertes im Array entspricht dem Index eines Bildes im Listing-Objekt -- wenn einer der Werte "on" ist, wird der Dateiname im images-Array, der diesem "on"-Wert entspricht, aus dem Dateisystem gelöscht, und das Bild wird aus der Datenbank entfernt.
Jedoch, wenn das Formular gesendet wird, erhält die App ein 0-indexiertes Array von nur die angekreuzten Kontrollkästchen. Also, wenn ich drei beliebige Bilder zum Löschen festlegen, würde die App erhalten
Array {
\[0\] => "on",
\[1\] => "on",
\[2\] => "on"
}
Dies funktioniert natürlich nicht, da die ersten 3 Bilder in der Liste gelöscht werden, unabhängig davon, welche Kontrollkästchen aktiviert sind.
Wie kann ich das beheben? Ich möchte vermeiden, jedes Kontrollkästchen zu benennen ( delete_1
, delete_2
, delete_3
usw.), da das System bereits so aufgebaut ist, dass alle Kontrollkästchen denselben Namen haben. Kann ich irgendwie erzwingen, dass alle Kontrollkästchen entweder mit "on" oder "off" übermittelt werden?