Q&A

안녕하세요.

 

주소에서 변수 값을 전달 받아 include 경로에 포함하고 싶습니다

 

예시)

https://xetown.com/index.php?mid=test&var1=porofile

 

{@ $var1 = Context::get('var1')}

 <!--#include("{$var1}.html")-->

 

기대 값  : <!--#include("profile.html")-->

결과 값 : <!--#include("{$var1}.html")-->

 

var1변수을 전달 받아 a링크나 img태그에 var1변수 값이 정상 노출되고 있지만,

include구문에만 var1변수 값이 노출되지 않고 있습니다.

 

어떤 방법으로 include에 var1변수 값을 포함할 수 있는지 조언 부탁드려요

 

댓글 7

  • {@
    $val = Context::get('var');
    $val = $val.".html";
    }
    <include target="$val"/>
    이렇게 한번해보시겠어요?
  • @키아
    그 방식으로 해봤지만 안 되네요

    혹시 해당 방법으로 변수값이 가져오고 있으신가요?
  • @키아
    Context::get으로 가져오실 필요 없이 그냥 $val 처럼 사용해도 Context::get('val')과 같습니다.
    또한 인클루드문 파싱시 변수는 전혀 처리되지 않습니다.
  • 인클루드문을 파싱하는 과정에서 변수처리가 전혀 없기에...

    {@
    $oTemplate = &TemplateHandler::getInstance();
    $html = $oTemplate->compile(_XE_PATH_ . '(자료종류)/(자료폴더명)/skins/(스킨명)/', '(템플릿파일명)');
    echo $html;
    }

    위와 같이 템플릿핸들러를 직접 가져와 출력하셔야 할거에요. 캐시처리는 compile함수에서 이루어지기에 신경쓰실건 없지만 변수에 이상한 값이 들어가지 않게 필터링은 잘 해주셔야 합니다.

  • @YJSoft
    개발 초보자라 말씀 하신 내용을 이해하기가 어렵네요

    조그만 상세하게 알려주시면 안 될까요?
  • @웹쟁이

    인클루드문이 들어가야할 곳에 위 코드가 들어가야 합니다.
    괄호쳐진 부분은 자료에 맞게 수정해주셔야 하고요.

    잘 모르시겠다면 그냥
    <!--@if($var1=="value")-->
    <include target="value.html">
    <!--@endif-->

    이런식으로 하셔도 됩니다.

  • @YJSoft
    어차피 인클루드할 파일이 수백 개씩 되지는 않을 테니 이걸 복붙해서 넣는 것이 가장 깔끔하고 보안에도 좋겠네요.