XETOWN

안개 골목

최신 웹 개발에 대한 이야기들을 나눠보세요. XE개발에 대해서도 배워볼 수 있습니다.
조회 수 109 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
263 소스공유 개발중이던 모듈 몇 가지를 공개합니다. 7 file SimpleCode 2017.02.22 196
262 XE 개발팁 최근게시물에서 alt 안에 html 소스가 먹힌 경우 이온디 2017.02.18 43
261 XE 개발팁 최근게시물 위젯에서 해당 게시판명 불러오는 함수 이온디 2017.02.18 29
260 최신 웹소식 Linode에서 5달러짜리 가상서버가 나왔네요. 10 기진곰 2017.02.15 140
259 XE 개발팁 그룹별로 게시물 보이게 하기 1 이온디 2017.02.15 66
258 소스공유 jquery를 이용하여 인풋에 기본값을 placeholder로 바꿔주는 소스 이온디 2017.02.11 55
257 XE 개발팁 HTML5 API 사용시 브라우저 지원 체크하기 file 후하니 2017.02.09 53
256 소스공유 APM 최신 Stable 소스 설치 4 아파치 2017.02.05 95
255 개발이야기 1년간 개발한 모듈의 관리자 페이지 디자인 변경 작업을 하면서.. 4 file 구름이 2017.01.24 156
254 XE 개발팁 동영상 삽입시 소스모드로 바꾸지 않아도 되도록 하기 8 기진곰 2017.01.09 180
253 소스공유 토렌트 정보 애드온 수정본 (트레커, 파일쪽 textarea처리) 3 file 우리아기 2017.01.07 126
252 XE 개발팁 애드온에서 변수 중복 방지하기 2 기진곰 2017.01.03 84
251 소스공유 APM 자동설치 스크립트... 28 file 아파치 2016.12.31 212
250 개발이야기 라이믹스가 한 살이 되었습니다. 15 file 기진곰 2016.12.18 277
249 개발이슈 php7 에서 xe 비정상 작동시 확인 구름이 2016.12.16 135
» XE 개발팁 xe 템플릿에서 가변 변수 사용하기 2 구름이 2016.12.16 109
247 최신 웹소식 구글, 보이지 않는 reCAPTCHA 개발중 4 file 라르게덴 2016.12.12 248
246 소스공유 스크롤바를 아래로 내렸을때 숨겨둔 컨텐츠 표시하기( jquery Infinite Scrolling ) 12 구름이 2016.12.05 212
245 개발이야기 Nginx, Apache PageSpeed 모듈 7 우성군 2016.11.28 142
244 XE 개발팁 사이트 메뉴에 메뉴 타입 추가하는 방법 3 file 갸라 2016.11.28 96
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14
위로
서버에 요청 중입니다. 잠시만 기다려 주십시오...