XETOWN

안개 골목

최신 웹 개발에 대한 이야기들을 나눠보세요. XE개발에 대해서도 배워볼 수 있습니다.
조회 수 122 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
251 소스공유 APM 자동설치 스크립트... 28 file 아파치 2016.12.31 276
250 개발이야기 라이믹스가 한 살이 되었습니다. 16 file 기진곰 2016.12.18 355
249 개발이슈 php7 에서 xe 비정상 작동시 확인 구름이 2016.12.16 179
» XE 개발팁 xe 템플릿에서 가변 변수 사용하기 2 구름이 2016.12.16 122
247 최신 웹소식 구글, 보이지 않는 reCAPTCHA 개발중 4 file 라르게덴 2016.12.12 382
246 소스공유 스크롤바를 아래로 내렸을때 숨겨둔 컨텐츠 표시하기( jquery Infinite Scrolling ) 12 구름이 2016.12.05 287
245 개발이야기 Nginx, Apache PageSpeed 모듈 7 우성군 2016.11.28 211
244 XE 개발팁 사이트 메뉴에 메뉴 타입 추가하는 방법 3 file 갸라 2016.11.28 131
243 최신 웹소식 최근 국내 웹브라우저 점유율 8 file 휘즈 2016.10.19 556
242 개발이야기 슈퍼캐시 사용시 캐시파일 재생성 오류 패치 69 기진곰 2016.10.05 370
241 개발이야기 회원 차단 모듈 .. (수요조사) 20 구름이 2016.09.28 211
240 개발이야기 회원 차단 모듈 개발중.. 중간 잡담 21 구름이 2016.09.26 160
239 최신 웹소식 디도스 공격의 계절 14 기진곰 2016.09.24 292
238 최신 웹소식 삼성전자, 세계 최고 성능 ‘960 PRO’ 2TB 공개 13 하늘희 2016.09.21 213
237 개발이야기 로딩속도 0.01초에 도전합니다. (슈퍼캐시) 48 file 기진곰 2016.09.17 841
236 개발이야기 회원 메모 개발중... 중간 잡담 21 file 구름이 2016.09.12 200
235 소스공유 DLNA 서버 설치 (miniDLNA) 3 하늘희 2016.07.30 218
234 소스공유 CloudFlare DDNS 설정하기 (ddclient 이용) 1 하늘희 2016.07.27 177
233 XE 개발팁 레이아웃 경로 가져오기 윈컴이 2016.07.14 131
232 소스공유 제이쿼리 원형 프로그레스바입니다. 2 이온디 2016.06.18 262
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 15 Next
/ 15
위로
서버에 요청 중입니다. 잠시만 기다려 주십시오...