포럼
1.7.3에서 레이아웃 설정에서 체크박스로 된 기능 작동하시나요
2013.04.04 13:34
/conf/info.xml
<var name="text" type="checkbox"><title>체크박스</title>
<options value="default"><title>default</title></options>
</var>
layout.html
<block cond="$layout_info->text =='default'">텍스트</block>
레이아웃 설정에서 이런 코드가 있는데,,
1.7.1 에서 만들 때 정상적으로 작동했는데..
1.7.3 으로 올라온 후 적용해보니깐 안되는 거에요.. 체크 해제해도 안되구요...
다른 분들도 그러는 건지, 제가 실수한 부분이 있는지요..
댓글 7
-
IZUZero
2013.04.05 14:03
-
이온디
2013.04.05 15:07
체크되어있을 땐 정상적으로 출력됩니다만 체크 해제하니깐 오류가 뜨지 않나요??
Warning: in_array() expects parameter 2 to be array, null given in /usr/home/xynex/files/cache/template_compiled/f42c51a68438d2d19cf6a3125bafbbe1.compiled.php on line 88
이렇게 뜨는데 저는..
-
IZUZero
2013.04.05 23:24
확인해봤는데 아무것도 체크되지 않았을 때에도 오류는 없었습니다.
XE 1.7.3.0입니다.
-
이온디
2013.04.06 05:37
제가 사용하는 의도는 이런 겁니다.{@$conf=$layout_info;}<!--@if($conf->view=='adminbar')-->{Context::set("admin_bar", "true")}<!--else-->{Context::set("admin_bar", "false")}<!--@end-->adminbar 항목에 체크했을 땐 표시가 되구, 반대의 경우엔 표시하지 않구요.(체크박스라 그런지 else인 경우가 안되더라구요. 엘스는 선택되지 않는 모든 경우가 else에 속해버려서 그런지^^; ){$conf->view[0]=='선택자'}에서 == 이하를 지워도 되는지 알고아래 코드대로 작성니깐.. 이게 체크한 순서대로 표시가 되어버리더라구요.1. {$conf->view[0]}2. {$conf->view[1]}3. {$conf->view[2]}1. breadcrumb 2.search 3.adminbar 라고 가정했을 때,이렇게 하면 체크를 두번째인 search와 세번째인 adminbar에 했을 경우에는1. search2. adminbar3.이렇게 출력이 되더라구요.이즈님께서 알려주신대로 in_array를 사용하면 되는 하는데..//1. {in_array('breadcrumb', $conf->view)}2. {in_array('search', $conf->view)}3. {in_array('adminbar', $conf->view)}코드가 좀 복잡해보이더라구요..그래서 선택자 포함하는 걸로 하니깐 잘 되더라구요.//1. {$conf->view[0]=='breadcrumb'}2. {$conf->view[1]=='search'}3. {$conf->view[2]=='adminbar'}그런데 체크박스는 if .. else.. 를 이렇게 하면 안되는 거지요?<!--@if($conf->view[0]=='breadcrumb')-->breadcrumb<!--@else-->!breadcrumb<!--@end--><!--@if($conf->view[1]=='search')-->search<!--@else-->!se<!--@end--><!--@if($conf->view[2]=='adminbar')-->adminbar<!--@else-->!ad<!--@end-->이렇게 하니깐 맨 위에 !breadcrumb만 출력이 되더라구요.잠깐 질문 드렸는데 이 부분은 제가 php에 대해서 잘 모르는 왕초보라서 너그러이 이해해주시구요. ^^;;1.7.1에서는 이렇게 사용했었거든요.[div class="wdg" cond="$layout_info->view_cmt!='off'"]그럼 이제는 이렇게 하면 되는 건가요. else는 사용하지 않구요, 그대로 구문법대로 작성해보자면<!--@if($conf->view[0]!='breadcrumb')-->경로표시안됨<!--@end-->저는 $conf->view=='adminbar' 이렇게 사용하는게 더 간편한데..체크박스는 배열이라 [0] 이렇게 가운데 숫자를 꼭 작성해야 하는 건가봐요?그냥 1.7.1에서처럼 [0] 이라는 숫자를 안 적고도 되도록 하는 건 아예, 영~ 안되는 건가봐요?? ^^; -
IZUZero
2013.04.08 00:27
{@$conf = $layout_info;Context::set("admin_bar", (string)in_array("adminbar", $conf->view));}<!--@if(in_array("breadcrumb", $conf->view))-->breadcrumb<!--@else-->!breadcrumb<!--@end--><!--@if(in_array("search", $conf->view))-->search<!--@else-->!search<!--@end--><!--@if(in_array("adminbar", $conf->view))-->adminbar<!--@else-->!adminbar<!--@end--><!--@if(!in_array("breadcrumb", $conf->view))-->경로 표시하지 않음<!--@end-->아마 이렇게 짜셔야 할 거 같은데...코드 테스트는 안 해봤습니다.$conf->view 라는 값이 배열로 나오니까 배열로 비교해주는 방법 말고는 없을 듯해요. -
이온디
2013.04.09 11:44
그 방법 밖엔 없겠네요. ^^ 감사합니다.
잘 사용하던 방법이 안 먹히니깐.. 다시 다 수정해야겠습니다.ㅎ
개발자분들이 조금 더 편리한 방법을 제시해주시면 좋을텐데 욕심일까요 ㅠ
-
이온디
2013.04.05 15:57
Updates:
Status: Invalid
Comment #2 on issue 3334 by sinsy200@gmail.com: [1.7.3] 레이아웃에서 체크박스로 된 설정이 안 먹히는 것 같습니다.
http://code.google.com/p/xe-core/issues/detail?id=3334
체크박스는 여러 항목을 선택할 수 있기 때문에 그 값이 배열로 표현됩니다.
$layout_info->text[0] == 'default' 이렇게 하세요.안녕하세요.체크박스로 된 항목을 배열로 했을 때어떤 예로 사용할 수 있는지 예제 한 번만 알려주시면 안될까요..저번 방법은 1.7.1에서 됐다가 1.7.3에서 왜 변경된 건가요..?view_optionview_option = 최근글view_option = 댓글view_option = 태그이런 식으로 레이아웃에서 설정했거든요..이제는 그냥view_option = 최근글 이 아니라.. view_option[0], view_option[1] 이런 식으로 숫자만 넣어주면 되더라구요..
체크박스 옵션 테스트해보니까 체크된 박스를 값으로 해서 배열로 나오던데요...?
conf/info.xml
<var name="test" type="checkbox">
<title xml:lang="ko">what</title>
<options value="default">
<title xml:lang="ko">기본</title>
</options>
<options value="default2">
<title xml:lang="ko">기본2</title>
</options>
</var>
layout.html
<block cond="in_array('default', $li->test)">
test
</block>
이러니 잘 출력되네요.