XETOWN

안개 골목

최신 웹 개발에 대한 이야기들을 나눠보세요. XE개발에 대해서도 배워볼 수 있습니다.
조회 수 98 추천 수 1 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

https://www.xpressengine.com/qna/17468204

해당 링크를 보면 가변 변수 사용하기가 쉽지 않겠구나 하고 포기를 했었습니다.

답변 달아주신 라르게덴님 말이 정답입니다.

스킨 파일(html)에서는 {} 처리를 템플릿 언어로 보기때문에 가변 변수는 안되죠.

 

대신 xe에서 보통 사용하는 object 값이라도 스킨에서 가변 변수 비슷하게 활용해 보려고 궁리하다가 잘되는것 같아 글을 남겨봅니다.

 

---아래는 틀린 코드

 

$args=new stdClass;
$args->a1="1";
$args->a2="2";
Context::set('php_args',$args);

 

 

<!--@for($i=1;$i<3;$i++)-->
{@
$var_result=$php_args->{'a'.$i};
}
{$var_result}
<!--@end-->

오류나고 안됩니다.

 

--- 오류 코드 끝

 

오브젝트를 배열로 변환을 해주고 사용하면 가능합니다.

 

모듈.model.php 에 변환해주는 function 을 추가

function objectToArray($data)
    {
        if (is_object($data)) {
            $data = get_object_vars($data);
        }

        if (is_array($data)) {
            return array_map(array($this, 'objectToArray'), $data);
        }

        return $data;
    }

 

모듈.view.php 에서 배열로 변환

$args=new stdClass;
$args->a1="1";
$args->a2="2";

$testModel = getModel('test');
$args_array=$testModel->objectToArray($args);
Context::set('args_array',$args_array);

 

html 에서 사용

<!--@for($i=1;$i<3;$i++)-->
{@
$var_a="a".$i;
}
{$args_array[$var_a]}
<br>
<!--@end-->

 

결과:

1

2

  • profile
    기진곰 2016.12.16 11:17:11

    PHP 5.4 이후에는 get_object_vars와 배열 문법을 한번에 쓸 수도 있습니다.

    {get_object_vars($php_args)['a'.$i]}

    물론 호출 횟수가 많다면 매번 get_object_vars를 사용하기보다는 미리 배열로 변환해 두는 편이 낫겠죠.
    아무튼 PHP는 객체보다 배열을 다루기가 더 편하다는 것에는 변함이 없네요 ㅎㅎ

  • profile
    구름이 2016.12.16 11:55:37
    php 5.4 이후에서는 그렇게 사용 가능한가 봐요.
    std class 선언해서 사용하는것도 나쁘진 않지만 그래도 저는 배열이 쉽더라구요 ㅋ

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
259 XE 개발팁 동영상 삽입시 소스모드로 바꾸지 않아도 되도록 하기 3 기진곰 2017.01.09 94
258 소스공유 토렌트 정보 애드온 수정본 (트레커, 파일쪽 textarea처리) 3 file 우리아기 2017.01.07 101
257 XE 개발팁 애드온에서 변수 중복 방지하기 2 기진곰 2017.01.03 63
256 소스공유 APM 자동설치 스크립트... 27 file 아파치 2016.12.31 169
255 개발이야기 오랜만에 모듈 정리중입니다. file SimpleCode 2016.12.24 130
254 개발이야기 라이믹스가 한 살이 되었습니다. 14 file 기진곰 2016.12.18 218
253 개발이야기 포인트 선물 모듈 UI 정리중입니다. 10 file SimpleCode 2016.12.17 149
252 개발이슈 php7 에서 xe 비정상 작동시 확인 구름이 2016.12.16 84
» XE 개발팁 xe 템플릿에서 가변 변수 사용하기 2 구름이 2016.12.16 98
250 최신 웹소식 구글, 보이지 않는 reCAPTCHA 개발중 4 file 라르게덴 2016.12.12 208
249 개발이야기 요즘 시간날때마다 틈틈히 만들고 있는 프로그램(?)입니다. 9 file SimpleCode 2016.12.10 219
248 소스공유 스크롤바를 아래로 내렸을때 숨겨둔 컨텐츠 표시하기( jquery Infinite Scrolling ) 12 구름이 2016.12.05 184
247 개발이야기 포인트 선물 모듈 업데이트 중입니다 :) 16 file SimpleCode 2016.12.04 153
246 개발이야기 Nginx, Apache PageSpeed 모듈 7 우성군 2016.11.28 122
245 XE 개발팁 사이트 메뉴에 메뉴 타입 추가하는 방법 3 file 갸라 2016.11.28 81
244 개발이야기 포인트 플러스 모듈 관리자 페이지 UI를 열심히 다듬고 있습니다. 1 file SimpleCode 2016.11.27 80
243 최신 웹소식 최근 국내 웹브라우저 점유율 8 file 휘즈 2016.10.19 201
242 개발이야기 슈퍼캐시 사용시 캐시파일 재생성 오류 패치 69 기진곰 2016.10.05 310
241 개발이야기 회원 차단 모듈 .. (수요조사) 20 구름이 2016.09.28 174
240 개발이야기 회원 차단 모듈 개발중.. 중간 잡담 21 구름이 2016.09.26 145
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13
위로
서버에 요청 중입니다. 잠시만 기다려 주십시오...