2011-07-31 5 views
0

업로드 된 jpg 파일의 저장된 경로를 삭제하지 않고 CakePhp에서 레코드를 편집하고 싶습니다. 지금은 레코드를 편집 할 때 저장된 파일 경로를 삭제합니다.업로드 된 파일의 경로를 삭제하지 않고 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는 기존 데이터를 덮어 쓰려고하지 않으므로 단순히 무시합니다. 이전 값을 그대로 유지할 수 있습니다.

관련 문제