특정모듈에서 목록에 첨부파일 출력하기
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 8.4 |
해결 | Y |
$document->getUploadedFiles()
function dispContentsContentList(){..}
리스트를 담당하는 함수인데,
스킨에서
{var_dump($document)} 해보면 아래와 같이
object(DocumentItem)#617 (31) { ["error"]=> int(0) ["message"]=> string(7) "success" ["variables"]=> array(25) { ["document_srl"]=> int(4677) ["module_srl"]=> int(4492) ["member_srl"]=> int(5) ["category_srl"]=> int(0) ["sale_point"]=> int(0) ["sale_profit"]=> NULL ["purchase_count"]=> NULL ["title"]=> string(4) "sadf" ["copyright_srl"]=> NULL ["closed"]=> string(0) "" ["sale"]=> NULL ["anonymous"]=> string(0) "" ["adult"]=> string(0) "" ["preview"]=> string(0) "" ["capacity"]=> int(12221) ["extension"]=> string(0) "" ["sale_period_start_date"]=> NULL ["sale_period_end_date"]=> NULL ["regdate"]=> string(14) "20250307012316" ["apparent_module_srl"]=> int(4492) ["origin_module_srl"]=> int(4492) ["comment_count"]=> NULL ["status"]=> string(6) "PUBLIC" ["uploadedFiles"]=> NULL ["title_color"]=> string(0) "" } ["httpStatusCode"]=> int(200) ["document_srl"]=> int(4677) ["lang_code"]=> NULL ["grant_cache"]=> NULL ["allow_trackback_status"]=> NULL ["comment_page_navigation"]=> NULL ["columnList"]=> array(0) { } ["allowscriptaccessList"]=> array(0) { } ["allowscriptaccessKey"]=> int(0) ["uploadedFiles"]=> array(0) { } ["extra_eids":protected]=> array(0) { } ["filesize"]=> int(12221) ["file_size"]=> string(7) "11.93KB" ["purchase_count"]=> NULL ["sale_point"]=> string(59) "
file_size는 불러오는데, uploadedFiles는 못 불러오네요.
그래서 아래와 같은 코드를 해당 함수에 추가해놓고,
이제는 리스트에서 이렇게 하면 가져와지긴 합니다.
{var_dump($document->variables['uploadedFiles'])}
주먹구구식으로 소 뒷걸음질 치는 격으로 하고 있습니다.
고수분들의 조언 좀 부탁드립니다.
1089라인
// 파일 가져오기 (eond, 250307) $oFileModel = getModel('file'); // 문서 목록을 가져오는 부분 $output = $oDocumentModel->getDocumentList($args); foreach ($output->data as $key => $document) { // 파일 목록을 가져와서 문서 객체에 설정 $files = $oFileModel->getFiles($document->document_srl); $document->add('uploadedFiles', $files); //$oDocument->add('uploadedFiles', $oDocument->getUploadedFiles()); } // Context::set('document_list', $output->data); // {var_dump($document->variables['uploadedFiles'])} // $oDocument->add('uploadedFiles', $oDocument->getUploadedFiles()); // $args->uploadedFiles = $oDocument->getUploadedFiles(); // @foreach($oDocument->getUploadedFiles() as $key => $file) // @if(in_array($file->file_extension,array('jpg','jpeg','gif','png'))) // <img src="{$file->uploaded_filename}" alt="" style="order:-1"|cond="$file->cover_image=='Y'"/> // @endif // @endforeach

# 빠른 라이믹스 커뮤니티용 호스팅을 찾고 계신가요? >>>> 이온디호스팅 서비스는 PHP8 & Redis 서버 캐시를 활용하여 라이믹스에 최적화된 호스팅 서비스를 제공해드립니다. (서버세팅시 웹패널, 내도메인메일서비스도 함께 구축해드립니다.)
https://eond.com
댓글 8
다만 리스트에서 출력은
2는 안되고 1만 되네요.
2. 파일 사이즈 체크하기 전에 업로드 파일 변수 추가하고 (1050줄)
3. contents_list 출력하기 전에 uploadedFiles 추가해주고 (이건 필요없군요)3. 리스트에서 이렇게 해주면 되네요.
왜 계속 $document->변수명을 직접 조작하고 계신지 모르겠습니다.
$document->getUploadedFiles()가 나오지 않는 이유는 $document->variables['uploaded_count']가 비어 있기 때문입니다. DB에서 이 컬럼을 제대로 불러오지 않은 거죠. 기본적인 컬럼들을 DB에서 불러오면 uploadedFiles 같은 내부 자료구조들은 알아서 채워집니다. 직접 조작할 필요도 없고, 조작해서도 안 되는 변수들이예요.
rx_documents 테이블의 컬럼 목록과 $document->variables의 값들을 비교해 보세요. 빠진 것이 있다면 그것부터 해결하시기 바랍니다. 지난번에 comment_count도 똑같은 상황이었죠? 정상적인 문서는 var_dump를 찍었을 때 comment_count, trackback_count, uploaded_count, status 순으로 나옵니다.
이전에 말씀하신 지난 번 코드도 한번 해보긴 했는데 잘 안됐습니다
참고로 지난 번에 comment_count는 이렇게 해결했습니다.
그래서 이번에도 file도 똑같은 케이스겠구나 싶어서contents.view.php > dispContentsContentList() 에서 위와 같이 적고modules/contents/skins/ec_imin/form/file/template/webzine.blade.php 파일에는이렇게 해봤는데 여전히 출력이 안되더라구요. 혹시 제가 잘못한 부분이 있을까요?> 확인해보니..
output->data 안에서 적어줘야했고, getFileList가 아니라, getFiles($oDocument->document_srl) 였네요!
알려주셔서 감사합니다!
스킨에서는 이렇게 했습니다.
정리하면,
[잘못된방법]
이렇게 $oDocument를 조작하는 방법 대신에
[옳은 방법]
$oDocument->add('uploadedFiles', $args->uploadedFiles);
빠진 부분을 이렇게 추가해서 사용하라는 거 맞죠?
그러면 스킨에서도 위와 같이 없던걸 만들어내지 말고,
이런 식으로 해서
요렇게 쓰도록 수정했습니다.
아뇨, 넣을 필요가 없어야 하는 거예요.
원래 있어야 하는 건데 그걸 왜 수동으로 집어넣고 있냐고요
document model에서 불러오는 데이터는 순정 코어 그대로라고 가정하고...
contents model에도 getDocument(), getDocumentList() 등의 함수가 있는 모양인데
여기서 이상한 짓 하고 있지 않은지 굉장히 의심됩니다.
contents.model.php에서 getDocumentList 함수가 있네요.
이게 잘못 작성된 거군요 ㅠ
$document->get('uploadedFiles')를 해야 하는 것부터 잘못된 겁니다.
정상적인 문서라면 $document->getUploadedFiles()가 됩니다.
내부 자료구조를 조작할 필요도, 내부 자료구조에 직접 접근할 필요도 없습니다.
특히 문서를 불러올 때 columnList를 쓰는 곳이 있다면 유심히 살펴보세요.
필수 컬럼을 빠뜨렸을 수 있으니까요.