질문/조언질답게시판
Extra Form
PHP PHP 7.2

js에서 php변수를 사용하고 싶습니다

제 기억으로는

    var cookie_time_js = "<? echo $addon_info->cookie_time; ?> "

이렇게 하면 됬던걸로 기억하는데 맞나요?

  • profile
    js 가 위치한 곳이 어딘가요?
    변수가 XE,라이믹스 애드온에서 사용되는 것 같은데요.

    js 가 위치한 곳에서 $addon_info->cookie_time; 값이 찍히나요?

    XE,라이믹스 템플릿이고 $addon_info->cookie_time; 를 넘겨받은 상태라면

    var cookie_time_js = "{$addon_info->cookie_time} "
    이 지금 하시려는 것과 같은 형식 일겁니다.
  • profile profile
    감사합니다
    js로 넘겨받는거에서 계속 걸려서 그냥 html에 합쳐버렸네요;;
  • profile profile
    제가 예상하는게 맞다면 애드온 php에서
    Context::set('addon_info',$addon_info);
    이렇게 해주시면 템플릿에서 $addon_info 로 사용할 수 있어요.
  • profile profile
    템플릿에서는 $addon_info 는 이미 쓰고 있는데
    js에서 Context::set('addon_info',$addon_info);
    이게 안되는걸로 알고있어서 ㅠㅠ
  • profile profile
    js 파일에서 애드온 변수를 받으려면,
    애드온 php단에서 Context::addHtmlHeader() 등을 통해 js 변수를 전역으로 설정해주고,
    js 단에서는 전역 변수를 가져와서 사용하면 됩니다.
  • profile profile

    js에서 쓰라는게 아니구요. 애드온 php 에서 Context::set('addon_info',$addon_info); 을 해주면
    템플릿에서 $addon_info를 쓸수 있습니다.

    그래서 var cookie_time_js = "{$addon_info->cookie_time}" 가 가능해진다는 것입니다.

    템플릿에서 이미 $addon_info 를 쓰고 계시다면
    {$addon_info->cookie_time} 로 찍으면 값이 나와야 합니다.

    값이 나온다면 var cookie_time_js = "{$addon_info->cookie_time}" 도 당연히 가능하구요.

     

    스크립트가 템플릿 안에 있다는 가정에서 말씀 드린 것입니다. 

    js가 어디 있는지 답이 없으셔서..

     

    <? echo 

    로 변수를 출력하려고 하셨으니 당연히 템플릿 안에서 사용하는거라 읽여집니다.

  • profile profile
    앗 이해를 잘못 했었네요 죄송합니다.

    tpl 폴더에 index.html 과 main.js 가 있었습니다.
  • profile profile
    그렇군요! 감사합니다.
  • profile

    1) 애드온에서 Context로 변수를 넘기고

    2) 템플릿에서 그 값을 불러와서 뿌려주면

    3) 그걸 js로 해석합니다.

     

    이 과정이 너무 복잡하다? 그러면 그냥 애드온에서

    Context::addHtmlHeader('<script> var cookie_time_js = "' . $addon_info->cookie_time . '"; </script>');

    이렇게 하는 방법도 있습니다. $addon_info->cookie_time 변수를 여기저기로 전달하기 귀찮으니, 그 변수가 확실하게 존재하는 시점에 일처리를 죄다 끝내 버리는 거죠.