Sie haben ein paar Probleme in Ihrem Code:
$uploadedfile
wird nie deklariert, aber es wird verwendet, um den Dateipfad zu finden. Ich nehme an, das ist dasselbe wie$getdeleted
.- Sie haben eine foreach-Schleife um die Elemente in Ihrem Array, die jedes Element der Reihe nach aufnimmt. Sie modellieren jedoch die Funktion
deleteGreetings
nimmt das gesamte Array. Sie sollten diesen Funktionsaufruf aus Ihrer Schleife entfernen, da er sonst für jedes Element im Array aufgerufen wird. Sie möchten dies nur einmal aufrufen. - Erst am Ende Ihres Controllers prüfen Sie, ob Ihr CID-Parameter null ist ... was ist der Sinn? Sie sollten dies zuerst überprüfen, bevor Sie versuchen, den anderen Code auszuführen.
Ich würde so etwas tun:
$arrayIDs = JRequest::getVar ( 'cid', null, 'default', 'array' );
if ($arrayIDs === null) { //Make sure the cid parameter was in the request
JError::raiseError ( 500, 'cid parameter missing from the request' );
}
$model = & $this->getModel ( 'greetings' );
jimport ( 'joomla.filesystem.file' );
if (is_array ( $arrayIDs ) && count ( $arrayIDs ) > 0) {
$del = $model->deleteGreetings ( $arrayIDs );
// check this outside the loop, if it is inside you are checking it for
// each element in the array. Here we check once and then go forward.
if ($del) {
foreach ( $arrayIDs as $k => $id ) {
$uploadedfile = $model->getUploadpic ( $id );
$deletefile = JPATH_COMPONENT . DS . "uploads" . DS . $uploadedfile;
JFile::delete($deletefile);
//unlink ( $deletefile );
}
}
}