글쓴사람 이상철
글쓴시간 2021년 11월 30일 오후 3시 14분 31초
제목 print_ 에 loop가 실행이 안됩니다.
function parseMySyntax 를
'BEGIN ' =>'{@',
'END ' =>'{/',
'<!--%' => '<!--{',
'%-->' => '}-->'
이렇게 설정했습니다.
그리고 Template_.php 에도
var $prefilter = 'parseMySyntax';
설정했습니다.
tpl.파일.php 파일에는
$tpl->define('getLec');
for($i = 0; $i < count($selcateList); $i ++) {
$_sub_lecture[] = array(
'cate_name' => $cate_name,
'teacher_name' => $package['teacher_text'],
'title' => $selcateList[$i]['title'],
);
$subData = &$_sub_lecture[$i]['sub'];
for($j = 0; $j < count($detail_list); $j ++) {
$subData[] = array(
"lec_title" => $detail_list[$j]['name'],
"lec_subtime" => $detail_list[$j]['subtime']
);
} // for
} // for
$tpl->assign('lec1',$_sub_lecture);
$tpl->print_('getLec');
이렇게 했는데, print_하면 $_sub_lecture 배열에 있는 값이 html파일에 넘어가지 않습니다.
제가 print_r($_sub_lecture) 화면에 출력해보면 값은 들어있는데 html로 만든 곳에는 값이 출력이 되지 않습니다. 무엇이 문제일까요?
html 파일은 이렇게 했습니다.
<!--BEGIN lec1-->
<tr>
<td>%lec1.cate_name%</td>
<td class="tl">%lec1.title%</td>
<td>%lec1.teacher_name%</td>
<td>%lec1.playtime%</td>
<!--BEGIN sub-->
<tr>
<td></td>
<td class="tl">%sub.lec_title%</td>
<td></td>
<td>%sub.lec_subtime%</td>
</tr>
<!--END-->
</tr>
<!--END-->
관리자
<!--BEGIN lec1-->
이 부분이
<!--{@ lec1-->
이렇게 필터링됐을거니까
오른쪽 } 가 빠졌네요
21-11-30 15:25
이상철
<!--BEGIN lec1}-->
<tr>
<td>%lec1.cate_name%</td>
<td class="tl">%lec1.title%</td>
<td>%lec1.teacher_name%</td>
<td>%lec1.playtime%</td>
<!--BEGIN sub}-->
<tr>
<td></td>
<td class="tl">%sub.lec_title%</td>
<td></td>
<td>%sub.lec_subtime%</td>
</tr>
<!--END}-->
</tr>
<!--END}-->
제가 이렇게 수정했는데, 결과는 마찬가지입니다
<!--END}--> 이렇게도 해보고 <!--END--> 이렇게도 해봤는데 결과는 마찬가지입니다.
html파일에는
%lec1.cate_name% %lec1.title% %lec1.teacher_name% %lec1.playtime%
%sub.lec_title% %sub.lec_subtime%
parseMySyntax에 위처럼 해놓으면
%lec1.cate_name% 쓰는게 맞는거죠?
이렇게 나옵니다.
21-11-30 16:27
관리자
아뇨
<!--% 만 설정했으니까
%lec1.cate_name% 는
{lec1.cate_name} 으로 필터링되지 않습니다
이거 하려면
str* 함수 대신에 패턴함수 써야 하고
걸림돌이 한 두개가 아닐거 같은데
고생 끝에 필터를 잘 만들었다고 해도
디버깅 및 소스관리가 불편할 수 있습니다
21-11-30 16:49