Smarty 문서 원본 보기
←
Smarty
둘러보기로 가기
검색하러 가기
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
이 문서는 편집하거나 다른 명령을 할 수 없도록 보호되어 있습니다.
문서의 원본을 보거나 복사할 수 있습니다.
PHP Template Engine인 smarty를 정리 한다. *홈페이지 : http://www.smarty.net/ *다운로드 : http://www.smarty.net/download.php *라이선스 : GNU LGPL *플랫폼 : PHP <br> ==프로그램 문법== ===프로그램 기초=== *선언 및 사용 #--- Smarty.class.php 파일이 있는 위치를 나타내는 SMARTY_DIR 상수를 정의 한다. #--- php.ini 파일의 include_path에도 추가 되어 있어야 한다. #--- $compile_dir과 $cache_dir에 대한 읽고 쓰기 권한이 있어야 한다. define('SMARTY_DIR', '/var/www/html/sugar/include/Smarty'); require_once('Smarty.class.php'); $smarty = new Smarty(); $smarty->template_dir = '.'; $smarty->compile_dir = '/var/www/html/sugar/cache/smarty/templates_c/'; $smarty->config_dir = '/var/www/html/sugar/cache/smarty/configs/'; $smarty->cache_dir = '/var/www/html/sugar/cache/smarty/cache/'; $smarty->assign('firstname', 'Doug'); ### $str = $smarty->fetch('index.tpl'); $smarty->display('index.tpl'); ===상수/변수=== *내장 상수 SMARTY_DIR SMARTY_CORE_DIR *Smarty 클래스 변수 $debugging $debug_tpl $debugging_ctrl $autoload_filters $compile_check $force_compile $caching $cache_lifetime $cache_handler_func $cache_modified_check $config_overwrite $config_booleanize $config_read_hidden $config_fix_newlines $default_template_handler_func $php_handling $security $secure_dir $security_settings $trusted_dir $compiler_class $request_vars_order $request_use_auto_globals $error_reporting $compile_id $use_sub_dirs $default_modifiers $default_resource_type *Smart 문법이 적용되는 Delimiter 정의 $left_delimiter : Default 값. { $right_delimiter : Default 값. } *Smarty에서 사용하는 디렉토리리를 지정 한다. $template_dir $compile_dir $config_dir $plugins_dir $cache_dir ===함수=== *Smart 클래스 함수 append() -- 할당된 템플릿 배열에 요소를 추가합니다. append_by_ref() -- 참조로서 값을 추가합니다. assign() -- 템플릿에 값을 할당합니다. assign_by_ref() -- 참조로서 값을 할당합니다. clear_all_assign() -- 할당된 모든 템플릿 변수를 파기합니다. clear_all_cache() -- 모든 템플릿의 캐시를 파기합니다. clear_assign() -- 할당된 템플릿 변수의 값을 파기합니다. clear_cache() -- 지정한 템플릿의 캐시를 파기합니다. clear_compiled_tpl() -- 지정한 템플릿의 캐시를 파기합니다. clear_config() -- 할당된 모든 설정 파일의 변수를 파기합니다. config_load() -- 설정 파일 데이터를 로딩하여, 템플릿에 할당합니다. display() -- 템플릿을 표시합니다. fetch() -- 템플릿의 출력을 반환합니다. get_config_vars() -- 로딩된 설정 파일 변수를 반환합니다. get_registered_object() -- 등록된 오브젝트의 참조를 반환합니다. get_template_vars() -- 할당된 변수의 값을 반환합니다. is_cached() -- 템플릿이 유효한 캐시를 가질 경우에 TRUE를 반환합니다. load_filter() -- 필터 플러그인을 로딩합니다. register_block() -- 블록 함수 플러그인을 동적으로 등록합니다. register_compiler_function() -- 컴파일러 함수 플러그인을 동적으로 등록합니다. register_function() -- 템플릿 함수 플러그인을 동적으로 등록합니다. register_modifier() -- 변수의 변경자 플러그인을 동적으로 등록합니다. register_object() -- 템플릿 내에서 사용할 오브젝트를 등록합니다. register_outputfilter() -- 출력 필터를 동적으로 등록합니다. register_postfilter() -- 포스트 필터를 동적으로 등록합니다. register_prefilter() -- 프리 필터를 동적으로 등록합니다. register_resource() -- 리소스 플러그인을 동적으로 등록합니다. trigger_error() -- 에러 메시지를 출력합니다. template_exists() -- 지정한 템플릿이 존재하는지 아닌지를 체크합니다. unregister_block() -- 동적으로 등록된 블록 함수 플러그인의 등록을 해제합니다. unregister_compiler_function() -- 동적으로 등록된 컴파일러 함수의 등록을 해제합니다. unregister_function -- 동적으로 등록된 템플릿 함수 플러그인의 등록을 해제합니다. unregister_modifier() -- 동적으로 등록된 변수의 변경자 플러그인의 등록을 해제합니다. unregister_object() -- 동적으로 등록된 오브젝트의 등록을 해제합니다. unregister_outputfilter() -- 동적으로 등록된 출력 필터 플러그인의 등록을 해제합니다. unregister_postfilter() -- 동적으로 등록된 포스트 필터 플러그인의 등록을 해제합니다. unregister_prefilter() -- 동적으로 등록된 프리 필터 플러그인의 등록을 해제합니다. unregister_resource() -- 동적으로 등록된 리소스 플러그인의 등록을 해제합니다. ===데이터 할당=== $smarty->assign('firstname', 'Doug'); ===기타 확장 문법=== *Template Cache :*캐시 :*캐시 핸들러 함수 *오브젝트 : PHP Object로의 접근 허용 *Filter : Pre_Filter, Post_Filter, Output_Filter function func_prefilter($tpl_source, &$smarty) { return preg_replace("/<!--#.*-->/U",'',$tpl_source); } $smarty->register_prefilter('func_prefilter'); $smarty->register_postfilter('func_postfilter'); $smarty->register_outputfilter('func_outputfilter'); *템플릿 리소스 : 파일외에 장소로부터 Template을 가져오고 싶을 때 사용 *Plugin :*Smarty의 대부분의 기능을 Plugin Architecture를 사용하여 확장 가능 :*Plugin type ::*function : 템플릿 함수 플러그인 ::*modifier : 변경자 플러그인 ::*block : 블록 함수 플러그인 ::*compiler : 컴파일러 함수 플러그인 ::*prefilter : 프리 필터 플러그인 ::*postfilter : 포스트 필터 플러그인 ::*outputfilter : 출력 필터 플러그인 ::*resource : 리소스 플러그인 ::*insert : insert 플러그인 :*Plugin 명명 규칙 ::*파일 명명 규칙 : type.name.php ::*함수 명명 규칙 : smarty_type_name($params, &$smarty) :*Plugin 등록 require_once $smarty->_get_plugin_filepath('function', 'html_options'); ==Template 문법== ===Template 기초=== *Script의 시작과 끝 { } *주석 {* ~ *} *Template 무시 (Template을 적용하지 않음) {literal} ~ {/literal} *PHP 코드 포함 {php} ~ {/php} *white space와 carriage return을 제외하고 브라우저에 전달 {strip} ~ {strip} *변수 사용 :*"" 내에서 변수를 사용할 때는 ``로 묶어 준다. 예) {func var="test `$foo.bar` test"} ===Template 상수/변수=== *내장 상수 *변수 선언 {assign var='name' value='Bob'} *Smarty 내장 변수 : {$smarty} {$smarty.request.username} {$smarty.get.page}, {$smarty.post.page} {$smarty.cookies.username} {$smarty.env.PATH} {$smarty.session.id} {$smarty.server.SERVER_NAME} : $_SERVER['SERVER_NAME'] {$smarty.now} {$smarty.const} {$smarty.capture} {$smarty.config} {$smarty.section},{$smarty.foreach} {$smarty.template} {$smarty.version} {$smarty.ldelim},{$smarty.rdelim} *PHP 프로그램에서 넘겨 받은 변수 {$foo} {$foo[4]} : 배열의 index는 0부터 시작함 {$foo.bar}, {$foo.$bar} : $foo['bar'], $foo[$bar] {$foo->bar}, {$foo->bar()} : Object내의 변수 및 함수 지정 {#foo#} : Config_File.class.php 내의 변수, {$smarty.config.foo} *변수의 변경자 :*사용 문법 : {$변수|변경자1: 변경자 1용 파라메터|변경자2|변경자3} capitalize cat count_characters count_paragraphs count_sentences count_words date_format default escape indent lower nl2br regex_replace replace spacify string_format strip strip_tags truncate upper wordwrap ===Template 함수=== *함수 사용 문법 {funcname attr1='val1' attr2='val2'} *내장 함수 {capture} {config_load} : Configure 파일 로딩 {foreach},{foreachelse} : {foreach from=$data key=name item=value} {$name} {$value} {/foreach} {if},{elseif},{else} {include} {include_php} {insert} {literal} {php} {section},{sectionelse} {strip} :*Smart 문법이 적용되는 Delimiter 정의 {ldelim} : Default 값. "{" {rdelim} : Default 값. "}" *외장 함수 : Plugin을 경유하여 실행되는 함수 {assign} {counter} : 숫자를 헤아린다. {cycle} : 값을 반복 순환 한다. {debug} : 화면에 Debug 정보를 표시 한다. {eval} {fetch} {math} {popup_init}, {popup} {textformat} : 텍스트의 포맷을 지정하여 보여 준다. :*HTML 문을 생성하는 외장 함수 {html_checkboxes} {html_image} {html_options} {html_radios} {html_select_date} {html_select_time} {html_table} {mailto} *config_load :*test.config #global pageTitle="Hello" [login] pageTitle="Login" :*Template {config_load file="test.conf" section="login"} {#pageTitle#} {$smarty.config.pageTitle} ===Template 포함=== *외부 Template 파일 포함 {include file='get_banner.tpl'} {include_php file='/path/to/load_nav.php'} {insert name="getBanner" lid=#banner_location_id# sid=#site_id#} : Cache되지 않음 *내부 Capture 영역 포함 {capture name=banner} {include file='get_banner.tpl'} {/capture} {$smarty.capture.banner} *외부 파일 포함 {fetch file='/export/httpd/www.example.com/docs/navbar.js'} {fetch file='ftp://user:password@ftp.example.com/path/to/currentheadlines.txt'} {fetch file='http://www.myweather.com/68502/' assign='weather'} ===Template 분기 및 순환=== *if 문 :*연산자 : ==, !=, >, <, >=, <=, ===, !, % {if $name eq 'Fred'} Welcome Sir. {elseif $name eq 'Wilma'} Welcome Ma'am. {else} Welcome, whatever you are. {/if} *foreach 문 {foreach from=$myArray item=foo} {$foo} {$smarty.foreach.foo.first} : 최초 반복일 경우 true {$smarty.foreach.products.last} : 마지막 반복일 경우 true {$smarty.foreach.foo.index} : for 배열의 인덱스 (0, 1, 2, ...) {$smarty.foreach.foo.iteration} : foreache문이 반복된 횟수 (1, 2, 3, ...) {$smarty.foreach.foo.total} : 반복할 전체 횟수 {foreachelse} {/foreach} {foreach from=$myArray key=name item=value} {$name}: {$value} {foreachelse} {/foreach} *section 문 {section name=customer loop=$custid} id: {$custid[customer]} {sectionelse} {/section} {section name=foo loop=$custid step=-1} {$custid[foo]} {/section} ===Template 확장 문법=== ==Smarty 분석== *배열 표시 <nowiki> {{foreach from=$detail_header_buttons key=name item=value}} </nowiki><br/> <nowiki> ppp : {$name} : {$value} <br/> </nowiki><br/> <nowiki> {{/foreach}} </nowiki> *배열의 배열 표시 { {foreach from=$detail_header_buttons key=parentName item=parentValue} } Parent : {$parentName} <br/> { {foreach from=$parentValue key=name item=value} } ppp : {$name} : {$value} <br/> { {/foreach} } { {/foreach} } ==참고 문헌== *[http://www.smarty.net/documentation Smarty Manual] *[http://www.peopleof.me/xe/smarty Smarty - 컴파일링 PHP 템플릿 엔진, 2009.9] [[Category:오픈소스]] [[Category:PHP]] [[Category:Template Engine]] [[Category:프로그램 언어]]
Smarty
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
변수
보기
읽기
원본 보기
역사 보기
더 보기
검색
주요 메뉴
오픈소스 컨설팅
오픈소스
오픈소스 라이선스
오픈소스 커뮤니티
오픈소스 종류
오픈소스 현황
오픈소스 한글화
문자셋과 인코딩
Storage
Network
보안
고가용성
모니터링
오픈 API
오픈 서비스
Cloud
BigData
Android
산사랑 노트
둘러보기
인기 문서
최근 수정 문서
모든 문서
모든 분류
임의 문서
위키 사용법
자매 사이트
CMS
오비컨 홈페이지
오비컨 CMS
블로그
데모 - SuiteCRM
산사랑의 Twitter
산사랑의 Facebook
친구 사이트
공개SW 포털
OLIS
한국공개소프트웨어협회
AppCenter 지원본부
OLC
PSEG
개발자 블로그
블로터
개인 메뉴
메뉴 수정
양식함
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보