Q&A

특정모듈에서 목록에 첨부파일 출력하기

2025.03.07 02:13
7
0
CMS/프레임워크 Rhymix 2.1
개발 언어 PHP 8.4
일반적으로 게시판 목록에서 아래와 같이 하면 첨부된 파일 목록이 출력됩니다.

$document->getUploadedFiles()
 
지금 작업 중인게 contents 모듈인데요. 저도 어떻게 동작되는지 잘 모릅니다.
 
modules/contents/contents.view.php
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'])}

 

주먹구구식으로 소 뒷걸음질 치는 격으로 하고 있습니다.

고수분들의 조언 좀 부탁드립니다.


contents.view.php.zip

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


 

 

eond Lv. 12

댓글 2

  • 3시간 전 #1902047
    1157 Context::set('content_list', $output->data); 이 줄 위에 아래 코드 추가하면 더 보기 좋네요!
    
             $oFileModel = getModel('file');
             //$output = $oDocumentModel->getDocumentList($args);
             foreach ($output->data as $key => $document) {
                 // 파일 목록을 가져와서 문서 객체에 설정
                 $files = $oFileModel->getFiles($document->document_srl);
                 $document->add('uploadedFiles', $files);
             }
    
    Context::set('contents_list', $output->data);

     

    다만 리스트에서 출력은

    [1] {var_dump($document->variables['uploadedFiles'])}
    [2] {var_dump($document->uploadedFiles)}

     

    2는 안되고 1만 되네요.

  • 3시간 전 #1902051
    1. $output->data가 선언되기 전에 파일 모듈 불러오고 (976줄)
    $oFileModel = getModel('file');
    if($output->data){

    2. 파일 사이즈 체크하기 전에 업로드 파일 변수 추가하고 (1050줄)

    $oDocument->uploadFiles = $oFileModel->getFiles($oDocument->document_srl);
    if($oDocument->filesize){

    3. contents_list 출력하기 전에 uploadedFiles 추가해주고 (이건 필요없군요)

    $oDocument->add('uploadedFiles', $files);
    Context::set('contents_list', $output->data);

    3. 리스트에서 이렇게 해주면 되네요.

    @php
         foreach ($document->uploadFiles as $key => $val) {
            if($val->mime_type=='video/mp4'){
                echo "<div class='img-box'><video src='" . $val->uploaded_filename . "' style='width:200px;height:150px;'></video></div>";
            }
        }
    @endphp