XETOWN

안개 골목

최신 웹 개발에 대한 이야기들을 나눠보세요. XE개발에 대해서도 배워볼 수 있습니다.
조회 수 117 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
256 소스공유 APM 최신 Stable 소스 설치 6 아파치 2017.02.05 129
255 개발이야기 1년간 개발한 모듈의 관리자 페이지 디자인 변경 작업을 하면서.. 4 file 구름이 2017.01.24 207
254 XE 개발팁 동영상 삽입시 소스모드로 바꾸지 않아도 되도록 하기 11 기진곰 2017.01.09 231
253 소스공유 토렌트 정보 애드온 수정본 (트레커, 파일쪽 textarea처리) 4 file 우리아기 2017.01.07 156
252 XE 개발팁 애드온에서 변수 중복 방지하기 2 기진곰 2017.01.03 91
251 소스공유 APM 자동설치 스크립트... 28 file 아파치 2016.12.31 241
250 개발이야기 라이믹스가 한 살이 되었습니다. 16 file 기진곰 2016.12.18 321
249 개발이슈 php7 에서 xe 비정상 작동시 확인 구름이 2016.12.16 162
» XE 개발팁 xe 템플릿에서 가변 변수 사용하기 2 구름이 2016.12.16 117
247 최신 웹소식 구글, 보이지 않는 reCAPTCHA 개발중 4 file 라르게덴 2016.12.12 323
246 소스공유 스크롤바를 아래로 내렸을때 숨겨둔 컨텐츠 표시하기( jquery Infinite Scrolling ) 12 구름이 2016.12.05 243
245 개발이야기 Nginx, Apache PageSpeed 모듈 7 우성군 2016.11.28 174
244 XE 개발팁 사이트 메뉴에 메뉴 타입 추가하는 방법 3 file 갸라 2016.11.28 116
243 최신 웹소식 최근 국내 웹브라우저 점유율 9 file 휘즈 2016.10.19 365
242 개발이야기 슈퍼캐시 사용시 캐시파일 재생성 오류 패치 69 기진곰 2016.10.05 351
241 개발이야기 회원 차단 모듈 .. (수요조사) 20 구름이 2016.09.28 197
240 개발이야기 회원 차단 모듈 개발중.. 중간 잡담 21 구름이 2016.09.26 151
239 최신 웹소식 디도스 공격의 계절 14 기진곰 2016.09.24 271
238 최신 웹소식 삼성전자, 세계 최고 성능 ‘960 PRO’ 2TB 공개 13 하늘희 2016.09.21 202
237 개발이야기 로딩속도 0.01초에 도전합니다. (슈퍼캐시) 48 file 기진곰 2016.09.17 770
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14
위로
서버에 요청 중입니다. 잠시만 기다려 주십시오...