이 논리는 엄밀히 말하면, 컨트롤러에 있어야합니다.
파일 및 편집 기능이있는 내 앱에서 수정 양식에 문제의 이미지의 파일 필드와 링크/미리보기 이미지가 표시됩니다.
나의 접근 방식은 내 자신의 업 로더를 사용하기 때문에 결과가 다를 수 있지만 기본적으로 :
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는 기존 데이터를 덮어 쓰려고하지 않으므로 단순히 무시합니다. 이전 값을 그대로 유지할 수 있습니다.