Extra Form
PHP PHP 7.3
CMS Rhymix 2.1

아래와 같은 구문이 html 화일안에 들어있습니다.

$('#svc-popup [data-type="svcDocumentList"] h1').html(ticket.product_name);

여기서 product_name이 다국어 변수(?) 인데, 실제 출력은 $user_lang->userLang20230514225506072 이런식으로 되고 있습니다. 어떻게 수정하는게 좋을까요?

 

(script 구문 밖에서는 <h3>{$ticket->product_name}</h3> 이렇게 입력되어 있고 정상 출력합니다.)

 

 

<script>
    
    function svcUseTicket(ticket_info) {
        var ticket = JSON.parse(atob(ticket_info));
        
        $('#svc-popup').attr('data-ticket-srl', ticket.ticket_srl);
        $('#svc-popup [data-type="svcUseTicket"] h1').html(ticket.product_name);
        $('#svc-popup [data-type="svcUseTicket"] span').html('{$lang->cmd_period_of_use}: ' + ticket.period_of_use);

        $('#svc-popup .svc-popup-body').hide();
        $('#svc-popup [data-type="svcUseTicket"]').show();
        $('#svc-popup').fadeIn(150);
    }

    function svcDocumentList(ticket_info) {
        var ticket = JSON.parse(atob(ticket_info));
        var documents = ticket.documents;
        
        $('#svc-popup').attr('data-ticket-srl', ticket.ticket_srl);
        $('#svc-popup [data-type="svcDocumentList"] h1').html(ticket.product_name);
        
        $('#svc-popup [data-type="svcDocumentList"] div').html('');
        for (var i in documents) {
            var document = documents[i];
            $('<a href="/' + document.document_srl + '"><b>' + document.title + '</b><span>' + document.regdate + '</span></a>').appendTo('#svc-popup [data-type="svcDocumentList"] div');
        }

        $('#svc-popup .svc-popup-body').hide();
        $('#svc-popup [data-type="svcDocumentList"]').show();
        $('#svc-popup').fadeIn(150);
    }

    $('.svc-popup-body[data-type="svcUseTicket"] button').on('click', function() {
        exec_json('hotopay.procHotopayActiveTicket', {
            ticket_srl: $('#svc-popup').attr('data-ticket-srl')
        }, function(data) {
            location.reload();
        }, function(data) {
            location.reload();
        });
    });
</script>

 

  • Lv36

    자바스크립트에서 사용하는 ticket_info라는 변수는 어디에서 가져오는 것인지 모르겠지만, 이걸 처음 생성할 때부터 다국어 내용을 변환한 상태로 전달해야 할 것 같습니다. JSON.parse와 atob가 들어가는 것으로 보아, 뭔가 좀 특이하게 인코딩해서 전달하는 것 같거든요. 그렇게 인코딩해 놓은 내용은 코어에서 자동으로 변환해줄 수가 없어요.

     

    예를 들어

        var ticket_info = '{이상한인코딩($ticket)}';

    이런 식으로 PHP에서 JS로 변수를 전달하고 있다면, 전달하기 전에 미리

        $ticket->product_name = Context::replaceUserLang($ticket->product_name);

    이렇게 변환해서 전달하면 됩니다.

  • Lv36 Lv5
    답변 감사합니다.. 어디서 생성하는지 조차 찾을 수가 없네요. 적어도 같은 모듈 내에는 없어서 포기하였습니다 ㅠ.ㅠ