PHP 템플릿 엔진에 내장된 기능 중 하나인 smarty

黄舟
풀어 주다: 2023-03-03 16:48:01
원래의
1292명이 탐색했습니다.

Smarty에는 일부 내장 함수가 있습니다.
내장 함수는 템플릿 언어의 일부입니다.
사용자는 내장 함수와 동일한 이름을 가진 사용자 정의 함수를 생성할 수 없으며 내장 함수를 수정할 수도 없습니다.
(insert, if, elseif, else, ldelim, rdelim, literal, php, section, sectionelse, Strip 등과 같은 내장 함수에 대해서는 두 번째 내장 함수를 참조하세요. php 템플릿 엔진 smarty)
#capture 함수
config_load
foreach,foreachelse
include
include_php

capture
속성 이름 유형 필수 기본값 설명
name string 기본값 없음 캡처된 블록의 이름
할당 문자열 아니요 해당 없음 캡처된 출력을 할당할 변수 이름

속성 유형이 기본값이어야 하는지 여부 설명
이름 문자열 기본값 없음 데이터 수집 영역 이름
문자열 할당 No n/a 데이터 수집 영역이 할당된 곳[테스트 대상]

캡처 기능은 템플릿에서 출력되는 데이터를 캡처하여 저장하는 기능입니다. 페이지에 출력하는 대신 변수에 저장합니다.
{capture name="foo"의 모든 내용 }과 {/capture} 사이의 데이터는 name 속성으로 지정되는 $foo 변수에 저장됩니다.
템플릿의 $smarty.capture.foo를 통해 이 변수에 액세스합니다.
name이 속성을 지정하지 않으면 함수는 기본적으로 "default"를 매개변수로 사용합니다.
{capture}는 쌍으로 나타나야 합니다. , 즉 {/capture}로 끝나며 함수는 중첩될 수 없습니다.
예:
{* 예를 들어 콘텐츠를 캡처한 후 데이터가 포함된 테이블 행을 출력합니다. , 아무것도 출력되지 않습니다*}
{capture name=banner}
{include file="get_banner.tpl"}
{ /capture}
{if $smarty.capture.banner ne "" }


{$smarty.capture.banner}

{/if}


config_load
구성 파일에서 변수 로드
속성 유형에 기본값이 있어야 하는지 여부 설명
파일 문자열 예 해당 없음 포함될 구성 파일의 이름
section string 아니요 해당 없음 구성 파일에 로드할 섹션의 이름
scope string no local 로드된 데이터의 범위, 값은 local, parent 또는 global이어야 합니다. 로컬은 해당 범위를 나타냅니다. 이 변수는 현재 템플릿입니다. parent는 이 변수의 범위가 현재 템플릿이고 전역은 이 변수의 범위가 모든 템플릿임을 나타냅니다. 🎜 >global boolean 아니요 아니요는 로드된 변수가 전역적으로 표시되는지 여부를 나타냅니다(scope=parent와 동일). 참고: 범위 속성이 지정되면 이 속성을 설정할 수 있지만 템플릿은 속성 값을 무시하고 범위 속성을 변수로 사용합니다. 표준.

예:
{config_load file="colors.conf"}

{#pageTitle#}







첫 번째주소



구성 파일에 여러 섹션이 포함될 수 있습니다. 이 경우 추가 속성을 사용할 수 있습니다. 섹션을 지정하여 변수를 가져오는 부분을 지정합니다.

참고: 구성 파일의 섹션과 템플릿 내장 함수 섹션은 이름이 같을 뿐 서로 관련이 없습니다.
예:
{config_load file="colors.conf" section="고객"}

{#pageTitle#}






첫 번째마지막주소



foreach,foreachelse

foreach는 섹션 외에 루프 처리를 위한 또 다른 솔루션입니다(다양한 필요에 따라 다른 솔루션 선택).
foreach는 간단한 배열을 처리하는 데 사용되며(배열의 요소 유형은 동일함) 형식이 더 좋습니다. 섹션보다 훨씬 간단하지만, 간단한 배열만 처리할 수 있다는 단점이 있습니다.
foreach는 /foreach와 쌍으로 사용해야 하며, from 및 item 속성을 지정해야 합니다.
name 속성은 임의로 지정할 수 있습니다. (문자, 숫자, 밑줄 조합).
Foreach는 중첩될 수 있지만 중첩된 foreach의 이름은 고유해야 합니다.
from 속성(일반적으로 배열)에 따라 루프 수가 결정됩니다.
foreachelse 문은 from 변수에 값이 없을 때 실행됩니다.
속성 유형에 기본값이 있어야 하는지 여부 설명
from string 예 n/a 루프할 배열 이름
item 문자열 예 해당 없음 현재 처리된 요소의 변수 이름
key string 아니요 해당 없음 현재 처리된 요소
의 키 이름
name string 아니요 해당 없음 루프의 이름, 다음 작업에 사용됨 루프에 액세스

예 1:
{* 이 예는 $custid 배열의 모든 요소를 ​​출력합니다. br>
id 값: 1001

id: 1002예 2:
$smarty->asse("contacts", array(array("phone" => "1", "fax" => "2", "cell" =>) ; "3"),
array("phone" => "555-4444", "fax" => "555 -3333", "cell" => "760-1234")));
*}
{* 키는 배열의 첨자입니다. 배열 설명을 참고하세요*}
{foreach name =outer item=contact from=$contacts}
{foreach key=key item=item from=$contact}
{$key}: {$item}

{/foreach}
{/foreach}
출력 결과:
전화: 1

팩스: 2

휴대폰: 3

전화: 555-4444
팩스: 555-3333
휴대폰 : 760-1234


foreach 루프에는 루프에 액세스하는 데 사용할 수 있는 자체 변수 이름이 있습니다. 사용 방법은 {$ smarty.foreach.foreachname.varname}입니다. 여기서 foreachname은 foreach에 지정된 name 속성은 현재 템플릿에 다른 템플릿을 포함하는 데 사용됩니다. 사용 가능한 파일 속성을 지정해야 합니다. 템플릿 리소스의 위치.
할당 속성이 설정된 경우 이 속성에 해당하는 변수 이름을 사용하여 포함할 템플릿의 출력을 저장하므로 포함할 템플릿의 출력이 표시되지 않습니다. 곧장. .
속성 유형을 사용해야 하는지 여부 기본값 설명
file string 예 n/a 포함할 템플릿 파일의 이름

할당 문자열 아니요 n/a 이 속성은 출력을 저장할 변수를 지정합니다. 포함될 템플릿

[ var ...] [var type] No n/a 포함할 템플릿에 전달된 로컬 매개변수는 포함할 템플릿에서만 유효합니다.

예 1 포함 기능 데모
{include file="header.tpl"}
{* 템플릿 본문이 여기에 표시됨 *}
{include file="footer.tpl"}

예 2 포함 기능 데모 전달된 매개변수 포함

{include file= "header.tpl" title="Main Menu" table_bgcolor="#c0c0c0"}

{* 템플릿 본문이 여기에 표시됨 *}
{include file="footer. tpl" logo="http://www .php118.com/php118.gif"}

예제 3 외부 템플릿 리소스를 사용한 include 기능 시연

{* 절대 파일 경로 *}

{include file="/usr/local/include/templates/header.tpl"}
{* 절대 파일 경로(동일) *}
{include file="file:/usr/local/include/templates/header .tpl"}
{* Windows 절대 파일 경로("file:" 접두사를 사용해야 함) *}

{include file="file:C:/www/pub/templates/header.tpl"}

{* "db"라는 템플릿 리소스에서 포함 *}
{include file="db:header.tpl"}

include_php
inluce_php 함수는 템플릿에 PHP 스크립트를 포함하는 데 사용됩니다. 안전 모드가 설정된 경우 포함된 스크립트는 $trusted_dir 경로에 있어야 합니다. include_php 함수는 해당 위치를 지정하는 파일 속성을 설정해야 합니다. 경로는 $trusted_dir의 상대 경로일 수도 있고 절대 경로일 수도 있습니다.
include_php는 템플릿 구성 요소화 문제를 해결하는 좋은 방법입니다. 예를 들어 다음과 같습니다. 사이트 탐색을 표시하는 데 사용되는 템플릿에서 데이터를 동적으로 검색하려면 데이터 콘텐츠의 PHP 논리 부분을 분리하여 별도의 폴더에 저장하고 템플릿 시작 부분에 PHP 스크립트를 포함하면 됩니다. 어디에서나 사용할 수 있습니다. 이전에 프로그램에서 데이터베이스 정보를 가져왔는지 걱정하지 않고 이 템플릿을 포함합니다.
템플릿에서 php 파일을 여러 번 호출하더라도 기본적으로 한 번만 포함되도록 설정할 수 있습니다. 한 번 속성은 호출할 때마다 파일을 다시 포함합니다. 한 번 속성을 false로 설정하면 파일이 호출될 때마다 파일이 다시 포함됩니다.
할당 속성이 설정된 경우에 해당하는 변수 이름은 다음과 같습니다. 이 속성은 포함될 PHP의 출력을 저장하는 데 사용되므로 나중에 PHP 파일이 포함된 출력이 직접 표시되지 않습니다.
포함할 PHP 파일에서 $this를 통해 smarty 객체에 접근할 수 있습니다.
속성 유형에 기본값 설명이 있어야 하는지 여부
file string 예 n/a 포함될 PHP 파일의 이름입니다. include
once boolean 아니요 true 포함할 PHP 파일이 포함된 경우 여전히 포함되어 있는지 여부(php의 include_once 함수와 유사)
할당 문자열 아니요 해당 없음 이 속성은 php 파일을 저장할 변수를 지정합니다. 포함될 PHP 파일의 출력


// mysql db에서 변수를 로드하고 템플릿에 할당
// mysql에서 데이터 가져오기 데이터베이스에 데이터를 할당하고 템플릿 변수 require_once("MySQL.class.php") ;
$sql = new MySQL;
$sql->query("select * from site_nav_sections order by name",SQL_ALL );
$this->할당('sections',$sql- >record);
?>

index.tpl
--------- -
{* 절대 경로 또는 $trusted_dir에 대한 상대 경로 *}
{* $trusted_dir에 대한 절대 경로 또는 상대 경로*}
{include_php file="/path/to/load_nav.php"}
{foreach item="curr_section" from=$sections}
< a href="http://www.php1.cn/"> {/foreach}

위 내용은 PHP 템플릿 엔진에 내장된 기능 중 하나인 smarty의 내용에 대한 자세한 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!