Bạn có một số vấn đề trong mã của mình:
-
$uploadedfile
không bao giờ được khai báo nhưng nó được sử dụng để tìm đường dẫn tệp. Tôi giả sử điều này giống với$getdeleted
. - Bạn có một vòng lặp foreach xung quanh các phần tử trong mảng của mình, vòng lặp này sẽ lần lượt lấy từng phần tử. Tuy nhiên, bạn lập mô hình chức năng
deleteGreetings
lấy toàn bộ mảng. Bạn nên loại bỏ lệnh gọi hàm này khỏi vòng lặp của bạn, nếu không nó sẽ được gọi từng hàm cho mọi phần tử trong mảng. Bạn chỉ muốn gọi điện thoại này một lần. - Chỉ ở cuối bộ điều khiển của bạn, bạn mới kiểm tra xem thông số cid của mình có rỗng không ... điểm mấu chốt là gì? Bạn nên kiểm tra mã này trước khi thử chạy bất kỳ mã nào khác.
Tôi sẽ làm một cái gì đó như thế này:
$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 );
}
}
}