2011-07-31 23 views
0

我想在CakePhp中編輯記錄而不刪除上傳的jpg文件的保存路徑。現在,當我編輯記錄時,它會刪除保存的文件路徑。如何編輯cakephp記錄而不刪除上傳文件的路徑

我認爲可行的方法是在表單中進行邏輯檢查,以檢查該字段是否爲空。如果保存的文件路徑不是空的,則顯示保存的文件路徑,如果是,則顯示空路徑。這是更新記錄的最佳方式嗎?

我正在使用Miles Johnson的上傳器插件來上傳文件。

這裏的表單中的代碼:

<?php   
if (!empty ($slider ['Slider']['bgImg'])); 
    echo $slider ['bgImg']; 
else    
    echo $form->input('file', array('type' => 'file'));    
?> 

回答

1

這個邏輯應該在控制器,嚴格地說。

在我的具有文件和編輯功能的應用程序中,我將在編輯表單上顯示文件字段以及相關圖像的鏈接/縮略圖。

我的方法是使用我自己的上傳,因此您的結果可能會有所不同,但本質:

if (!empty($this->data)) { 
    $file_object = $this->data['Listing']['featured_image']; 

    $image_data=$this->Upload->do_upload($file_object, 'img/uploads/'); 

    if($image_data){ 
     $this->data['Listing']['featured_image'] = $image_data['name']; 
    } else { 
     unset($this->data['Listing']['featured_image']); 
    } 

$this->Listing->save($this->data) 

,並在我的上傳組件,我有這樣的:

public function do_upload($file_object, $location='img/uploads/') { 
    /** 
    * No file was uploaded 
    */ 
    if($file_object['error']==4) { 
     return false; 
    } 
    // carry on uploading 

所以基本上;我通過我的上傳組件$file_object,這是從窗體。然後我做一個簡單的測試,使用默認的一組錯誤代碼來查看文件是否爲空(4)。如果它是空的,我會返回false。 (你可能會返回錯誤等,但這是我的方法)。

上傳調用後,我檢查返回值,如果文件上傳成功,我可以在我的模型中設置字段。 (文件名,在我的情況下) - 例如,您也可能想要存儲路徑。

如果它是假的 - 這意味着沒有文件;所以我取消了數組中的值。

因爲字段不存在於數組中,cake不會嘗試覆蓋現有數據 - 它只是忽略它;讓舊價值保持不變。

相關問題