2016-08-31 8 views
0

질문은 매우 간단합니다 : 서버 및 파일 테이블에 파일을 보존하는 방법, 그래서 엔티티 래퍼로 값을 설정 해제/변경 한 후에도 fid가 유효합니까?드루팔 (Drupal 7 | entity_wrapper 설정을 해제 한 후 파일을 보존 하시겠습니까?

$ewrapper = entity_metadata_wrapper('node', $sourceNode); 
unset($sourceNode->field_image[$sourceNode->language][0]); 
$ewrapper->save(); 

이제 관련 파일이 위와 같이 호출되면 즉시 삭제됩니다. 내가 사용하면 같은 일이 벌어집니다 :

$ewrapper->field_image->set($newImage); 

이 경우 이전 이미지를 유지해야합니다.

도움 주셔서 감사합니다.

답변

1

파일 상태를 FILE_STATUS_TEMPORARY에서 FILE_STATUS_PERMANENT으로 변경해야한다고 생각합니다.

https://api.drupal.org/comment/23493#comment-23493 기본적으로

, 아니 file_set_status() 기능이없는, 드루팔 6과 같은 일을했다,하지만 지금은이 코드가 같은 작업을 수행해야합니다 : 여기이 답변을 확인 그래서

// First obtain a file object, for example by file_load... 
    $file = file_load(10); 

    // Or as another example, the result of a file_save_upload... 
    $file = file_save_upload('upload', array(), 'public://', FILE_EXISTS_REPLACE); 

    // Now you can set the status 
    $file->status = FILE_STATUS_PERMANENT; 

    // And save the status. 
    file_save($file); 

을, 당신은로드 파일 객체를 다른 방법으로 변경하려면 status 속성을 변경하고 객체를 다시 저장하십시오.