글쓴사람 푸하라
글쓴시간2015년 7월 4일 오후 2시 16분 6초
    제목템플릿 파일 아이디를 변수 처럼 사용 가능한가요?
보통 템플릿 파일 내에서 include 템플릿을 할때 미리 디파인 해놓으면
{# file_id} 이런식으로 사용하는데 만일 탬플릿 파일내부에서  {# file_id}를 변수를 이용하여 사용이 가능한가요???
예를 들면 이런식으로 사용 가능한지 알 수 싶습니다.

if (xx) file_id =a.file
else if (xx) file_id =b.file

{# file_id}
관리자 if (xx) $tpl->define('file_id', 'a.file');
else if (xx) $tpl->define('file_id', 'b.file');

원하시는게 이건지 모르겠네요.
15-07-05 11:09
푸하라 아 !! 죄송해요 햇깔리게 글을 썼었나봐요...
템플릿 파일 내부에서 {# file_id} file_id 자체를 변수로 사용 할수 있는지 궁금해서 질문드린거에요...
컨트롤단에서 말고 템플릿 파일에서 수정이 가능한지 알고 싶어서 질문을 남겨봅니다.

{# file_id}의 경우 내부에서는 정적인 변수가 아니라 동적인 변수가 될 수 없는지 궁금합니다.

템플릿을 작성할때 이런식의 구현을 자주 사용하게 됩니다.
{? value} {# file_id1 }
{: value} {# file_id2}
{/}

만약에  file_id를 동적으로 변경할 수 있다면  file_id  => 를 이용한 if 구문을 템플릿 내부에서 줄여줄 수 있을꺼 같아서 질문을 남겨 봅니다.
15-07-05 23:31
관리자 아 인제 이해가 됐습니다.

그런데 말씀하신 {# } 구문내 파일아이디를 변수나 표현식으로 대체하는 기능은 제공되지 않고 있습니다.

참고로 설명서에 없는 xfetch() 라는 메소드가 있는데
define() 메소드와 {# } 구문을 사용하지 않고

{=this->xfetch('a.file')}

이런 식으로 하위 템플릿 인클루드가 가능합니다.

그러니까

$tpl->assign('value', 'a');

해놓고

{=this->xfetch(value + '.file')}

이렇게 표현식을 사용하는 것도 가능합니다.
15-07-06 01:23
푸하라 캐쉬로 만들어진 파일을 살펴보니 print_ 함 수를 통하여 변환되는것 까지 살펴 보았습니다.
혹시라도 나중에 이런 기능이 있다면 좋을듯 싶네요..
물론 템플릿에서 링크를 거는 것보다 컨트롤러에서 미리 구현하는것이 맞다고 생각되지만 그래도 만들다보면 이상하게도 템플릿에서 수정 가능 하면 어떨까 생각 되네요..
답변 감사합니다.
15-07-06 12:01
    이름
비밀번호
 
Since 2003-03-03 hosted on vultr.com