2015-04-07 65 views
1

我遇到問題。我爲我的記錄有一個圖像選項,但是當我更新我的記錄或刪除記錄時,它只會影響數據庫表,並且圖像文件仍位於文件夾位置。我已經閱讀了php的unlink函數,但不知道如何在我的情況下使用它。 這裏是我的代碼http://pastebin.com/KQZyAuA0的更新和刪除操作,如果有人知道答案,然後請與我分享。如何在更新或刪除記錄時從數據庫和文件夾位置永久刪除圖像

+0

你需要在這裏發佈相關的代碼。 – jeroen

+0

您需要粘貼代碼 – dev1234

回答

2

您可以將$ model-> save()中的代碼更改爲此,因此在重定向之前檢查目錄中是否存在舊圖像,將其刪除。

 $oldThumb = Yii::getPathOfAlias('media') . '/album/optimized/' . $model_old_data->photo; 
     $oldOptimized = Yii::getPathOfAlias('media') . '/album/optimized/' . $model_old_data->photo; 

     if ($model->save()) { 
      if (file_exists($oldThumb)) { 
       unlink($oldThumb); 
      } 
      if (file_exists($oldOptimized)) { 
       unlink($oldOptimized); 
      } 
      $this->redirect(array('view', 'id' => $model->id)); 
     } 

行動刪除必須改變,

public function actionDelete($id) 
    { 
     if (Yii::app()->request->isPostRequest) { 
// we only allow deletion via POST request 
      $model_old_data = $this->loadModel($id); 
      $oldThumb = Yii::getPathOfAlias('media') . '/album/optimized/' . $model_old_data->photo; 
      $oldOptimized = Yii::getPathOfAlias('media') . '/album/optimized/' . $model_old_data->photo; 

      $model = $this->loadModel($id); 
      if ($model->delete()) { 
       if (file_exists($oldThumb)) { 
        unlink($oldThumb); 
       } 
       if (file_exists($oldOptimized)) { 
        unlink($oldOptimized); 
       } 
      } 

// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser 
      if (!isset($_GET['ajax'])) { 
       $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin')); 
      } 
     } else { 
      throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.'); 
     } 
    } 
+0

查看答案,我已更新。 – dev1234

+0

好的非常感謝。 – NK143