2011-07-31 2 views
0

アップロードされたjpgファイルの保存されたパスを削除せずにCakePhpのレコードを編集したいとします。今すぐレコードを編集すると、保存されたファイルパスが削除されます。アップロードされたファイルへのパスを削除せずにcakephpレコードを編集する方法

フィールドが空であるかどうかをチェックするための形式で論理チェックを行うことが、私の考えるアプローチです。空でない場合は保存したファイルパスを表示するか、空のパスがあれば表示します。これがレコードを更新する最善の方法でしょうか?

私はMiles Johnsonのuploaderプラグインを使用してファイルをアップロードしています。

ここでは、フォーム内のコードです:

<?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を返します。 (あなたはエラーなどを返すことができましたが、これは私のアプローチでした)。

アップロードの呼び出し後、戻り値を確認し、ファイルが正常にアップロードされた場合は、モデルのフィールドを設定できます。 (私の場合はファイル名) - パスを保存することもできます。

偽の場合は、ファイルが存在しないことを意味します。私は配列から値を設定解除します。

フィールドが配列に存在しないため、ケーキは既存のデータを上書きしようとしません。単に無視するだけです。古い値をそのまま維持できます。