आपको अपने कोड में कुछ समस्याएं हैं:
$uploadedfile
कभी घोषित नहीं किया जाता है लेकिन इसका उपयोग फ़ाइल पथ खोजने के लिए किया जाता है। मुझे लगता है कि यह$getdeleted
. जैसा ही है ।- आपके पास अपने सरणी में तत्वों के चारों ओर एक फ़ोरैच लूप है जो प्रत्येक तत्व को बदले में उठाएगा। हालाँकि आप मॉडल फ़ंक्शन
deleteGreetings
पूरी सरणी लेता है। आपको इस फ़ंक्शन कॉल को अपने लूप से हटा देना चाहिए अन्यथा इसे सरणी में प्रत्येक तत्व के लिए प्रत्येक कहा जाएगा। आप इसे केवल एक बार कॉल करना चाहते हैं। - केवल अपने नियंत्रक के अंत में आप जांचते हैं कि आपका सीआईडी परम शून्य है या नहीं ... क्या बात है? किसी अन्य कोड को चलाने का प्रयास करने से पहले आपको इसे पहले जांच लेना चाहिए।
मैं कुछ ऐसा करूंगा:
$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 );
}
}
}