>  기사  >  백엔드 개발  >  PHP Smarty 사용 방법에 대한 자세한 설명 template_PHP 튜토리얼

PHP Smarty 사용 방법에 대한 자세한 설명 template_PHP 튜토리얼

WBOY
WBOY원래의
2016-07-22 09:02:35954검색

1. 템플릿의 댓글


각 Smarty 템플릿 파일은 Smarty 엔진의 구문과 결합된 웹 프런트엔드 언어(xhtml, css, javascript 등)를 통해 개발됩니다.


웹 프론트엔드 개발에 사용된 언어는 원본과 정확히 동일하며 댓글도 변경되지 않았습니다


똑똑한 주석 구문은 '왼쪽 종결자 변수 값*'과 '*오른쪽 종결자 변수 값'입니다. 이 두 구분 기호 사이의 내용은 주석 내용으로, 한 줄 이상 포함될 수 있으며 사용자는 웹 페이지를 탐색하여 볼 수 있습니다. . 원래 코드에는 주석이 표시되지 않으며, 이는 단지 템플릿 내의 주석일 뿐입니다. 다음은 주석의 작은 예입니다.


$smarty->left_lelimiter = '<{';

$smarty->right_delimiter = '}>';

참고: <{* 메모입니다 *}>

코드는 다음과 같습니다 코드 복사
 代码如下 复制代码

   $smarty->left_lelimiter = '<{';

$smarty->right_delimiter = '}>';

      注释:<{* this a note *}>   

$smarty->left_lelimiter = '<{';<🎜> <🎜> $smarty->right_delimiter = '}>'; 참고: <{* 참고 사항 *}>

2: 템플릿의 변수 선언


Smarty에서는 모든 것이 변수를 기반으로 하며 모든 프레젠테이션 로직은 템플릿에 의해 제어됩니다


변수에는 여러 가지 유형이 있습니다. 변수 유형은 앞에 붙거나

로 묶인 기호에 따라 다릅니다.


변수는 직접 출력되거나 직무 속성 및 수식자의 매개변수가 될 수도 있고, 내부 조건식 등에 사용될 수도 있습니다.


<{$name}> <{*일반 유형 변수, 값을 할당하려면 템플릿에서 할당 함수를 호출해야 합니다*}>


;;         

>

PHP에서 할당한 변수를 Smarty 템플릿으로 출력할 경우 변수 앞에 $ 기호를 추가하고 구분 기호로 묶어야 합니다. 명명 방법은 PHP의 변수 명명 방법과 동일하며, 구분 기호는 다음과 같습니다. PHP의 와 비슷합니다. (실제로는 이것으로 대체됩니다.)


3: 템플릿의 PHP에서 할당된 출력 변수


Smarty 템플릿에는 일반적으로 두 가지 유형의 변수가 사용됩니다. 하나는 PHP에서 할당된 변수이고 다른 하나는 구성 파일에서 읽은 변수입니다.


참고: 템플릿은 PHP에서 할당된 변수만 출력할 수 있습니다. 이 변수는 모두 전역 변수이므로 한 번만 할당하면 됩니다. 변수 내용은 주로 마지막에 할당됩니다.


Smarty에서 제공되는 foreach 또는 section 문은 출력 배열의 각 요소를 반복하는 데 사용됩니다. 인덱스 배열과 연관 배열이 템플릿에서 출력되는 방식은 인덱스 배열이 템플릿에서 액세스되고 PHP 스크립트에서 참조되는 방식과 유사합니다. , 연관 배열의 요소가 템플릿에 지정되는 방식은 '.'을 사용하여 액세스됩니다.

템플릿의 객체에 액세스하는 것은 PHP 스크립트와 동일하며 둘 다 '->' 연산자를 사용합니다.

4: Smarty 템플릿의 변수 수학적 계산

템플릿의 변수에 값을 직접 할당할 수는 없지만 수학 연산에 참여할 수는 있습니다. PHP 스크립트에서 수학 연산을 수행할 수 있으면 아래와 같이 템플릿에 적용할 수 있습니다.

<{$foo 1}> <{* 변수 + 1 *}>

<{$foo * $bar}> <{* 두 변수 곱하기 *}>


<{$foo->bar - $bar[1] * $foo->bar - 3 * 7}> <{* 연산에 참여하는 복합 유형 변수 *}>


<{if($foo 2 == 10)}> <{* 프로그램 로직에 수학적 연산이 적용됩니다 *}>

코드는 다음과 같습니다 코드 복사

<{$foo 1}> <{* 변수 + 1 *}>

 代码如下 复制代码

    <{$foo 1}> <{* 变量加1 *}>


     <{$foo * $bar}> <{* 两个变量相乘 *}>


     <{$foo->bar - $bar[1] * $foo->bar - 3 * 7}> <{* 复合类型变量参加运算 *}>


     <{if($foo 2 == 10)}> <{* 数学运算在程序逻辑中应用 *}>

<{$foo * $bar}> <{* 두 변수 곱하기 *}> <{$foo->bar - $bar[1] * $foo->bar - 3 * 7}> <{* 연산에 참여하는 복합 유형 변수 *}> <{if($foo 2 == 10)}> <{* 프로그램 로직에 수학적 연산이 적용됩니다 *}>


큰따옴표 안에 포함된 변수는 Smarty 템플릿에서 인식될 수 있지만 일부 변수는 아래와 같이 백틱 '`'으로 묶어야 합니다(이 기호는 '~'와 동일한 키에 있음).

코드는 다음과 같습니다 코드 복사
 代码如下 复制代码


     <{"test $foo test"}> <{* 双引号中使用变量 *}>


     <{"test `$foo[0]` test"}> <{* 双引号中反引号包住的数组变量 *}>


     <{"test `$foo.bar` test"}> <{* 双引号中反引号包住的对象成员变量 *}>


 

<{"test $foo test"}> <{* 큰따옴표 안에 변수 사용 *}> <{"test `$foo[0]` test"}<{* 큰따옴표로 묶인 배열 변수 *}> <{"test `$foo.bar` test"}> <{* 큰따옴표로 묶인 객체 멤버 변수 *}>
<{"test $foo test"}> <{* 큰따옴표 안에 변수 사용 *}>


<{"test `$foo[0]` test"}<{* 큰따옴표로 묶인 배열 변수 *}>


<{"test `$foo.bar` test"}> <{* 큰따옴표로 묶인 객체 멤버 변수 *}>

1단계: 다음과 같은 Smarty 템플릿 엔진 로드: require 'libs/Smarty.class.php'


2단계: $smarty = new Smarty();

와 같은 Smarty 개체를 만듭니다.


3단계: 캐싱 활성화, 템플릿 저장 경로 등과 같은 Smarty의 기본 동작을 수정합니다.


4단계: 프로그램에서 얻은 데이터를 Smarty 객체의 할당() 메소드를 통해 템플릿의 해당 변수에 할당


5단계: Smarty 객체의 display() 메소드를 사용하여 템플릿 콘텐츠 출력


할당() 메소드


이 방법은 템플릿의 변수에 값을 할당하는 데 사용되므로 사용하기가 더 쉽습니다


프로토타입: void 할당(문자열 변수 이름, 혼합 변수)


이 메소드는 PHP가 지원하는 유형 데이터를 배열 및 객체를 포함한 템플릿 변수에 할당할 수 있습니다


사용방법은 2가지가 있습니다

//'이름/값' 쌍을 지정합니다
$smarty->할당('질문','잘 지내세요');
$smarty->할당('답변','별로 좋지 않음');


//'이름/값'을 포함하도록 지정
$smarty->할당(array('question' => '잘 지내세요','답변' => '별로 좋지 않아요'));//이 방법은 덜 일반적으로 사용됩니다
디스플레이() 메소드


이 방법은 Smarty 기반 스크립트에서 사용해야 하며 스크립트에서 한 번만 사용할 수 있습니다. Smarty 엔진에서 참조하는 템플릿을 가져오고 표시하는 역할을 담당합니다


프로토타입: var display(string template[,string 캐시_id][,string compile_id])


매개변수 1: 템플릿이 필수입니다. 법적 템플릿 리소스의 유형과 경로를 지정하세요.


매개변수 2: 캐시_id는 캐시 식별자의 이름을 지정합니다.


매개변수 3: compile_id는 한 페이지에 여러 캐시를 유지할 때 사용됩니다.


사용방법은 다음과 같습니다
$smarty->display('tpl/template_dir/template.html');


간단한 예

1. libs: Smarty 클래스 라이브러리입니다


​ 2. tpl/cache_dir: 캐시 템플릿 저장


3. tpl/compile_dir: 컴파일된 템플릿 파일을 저장합니다

4. tpl/config_dir: 특수 구성 파일을 저장합니다

5. tpl/template_dir: 템플릿 파일 저장

6. smarty.php 파일에 Smarty 클래스 개체를 새로 만들고 다음 코드와 같이 각 개체의 속성 값을 설정합니다.


'libs/Smarty.class.php' 필요; // Smarty.Class.php 파일 로드


~ >

$tpl = new Smarty();

$ TPL- & GT; site_root.'Template_dir' // 저장 템플릿 파일

                    $tpl->compile_dir = SITE_ROOT .'compile_dir';//컴파일된 템플릿 파일 저장

                    $tpl->config_dir = SITE_ROOT .'config_dir';//특수 구성 파일 저장

~                                                                        $tpl->cache_dir = 'cache_dir';//Smarty 캐시 파일 저장

                                      $tpl->caching = 1;//캐싱 활성화

                    $tpl->cache_lifetime = 60*60*24;//캐시 시간 1일 

$tpl->left_delimiter = '<{';//왼쪽 종결자


을 통해

<본체>
코드는 다음과 같습니다 코드 복사

                                                   

代码如下 复制代码


require 'libs/Smarty.class.php';//加载Smarty.class.php文件


define('SITE_ROOT','./tpl/');//定义一个常量

$tpl = new Smarty();


$tpl->template_dir = SITE_ROOT . 'template_dir';//存模板文件   


                $tpl->compile_dir = SITE_ROOT . 'compile_dir';//存编译过的模板文件


                $tpl->config_dir = SITE_ROOT . 'config_dir';//存特殊配置文件


                $tpl->cache_dir = SITE_ROOT . 'cache_dir';//存Smarty缓存文件   


                $tpl->caching = 1;//启用缓存


                $tpl->cache_lifetime = 60*60*24;//缓存时间1天   


                $tpl->left_delimiter = '<{';//左结束符


$tpl->right_delimiter = '}>';//右结束符

'libs/Smarty.class.php' 필요; // Smarty.Class.php 파일 로드 ~ > $tpl = new Smarty(); $ TPL- & GT; site_root.'Template_dir' // 저장 템플릿 파일                     $tpl->compile_dir = SITE_ROOT .'compile_dir';//컴파일된 템플릿 파일 저장                     $tpl->config_dir = SITE_ROOT .'config_dir';//특수 구성 파일 저장 ~                                                                        $tpl->cache_dir = 'cache_dir';//Smarty 캐시 파일 저장                                       $tpl->caching = 1;//캐싱 활성화                     $tpl->cache_lifetime = 60*60*24;//캐시 시간 1일  $tpl->left_delimiter = '<{';//왼쪽 종결자<🎜> <🎜><🎜> 을 통해

7.index.php 파일의 홈페이지 코드는 다음과 같습니다


                      'smarty.php'가 필요합니다.


                  $tpl->할당('제목','제목 테스트');


                   $tpl->할당('content','content test');


                        $tpl->display('template.html');

코드는 다음과 같습니다 코드 복사
 代码如下 复制代码

      


require 'smarty.php';


$tpl->assign('title','title测试');


                $tpl->assign('content','content测试');


                $tpl->display('template.html');

                                                                          'smarty.php'가 필요합니다.                   $tpl->할당('제목','제목 테스트');                    $tpl->할당('content','content test');                         $tpl->display('template.html');

8.tpl/template_dir/template.html 코드는 다음과 같습니다

                                                                                              

                                      


~


~             

~

|


>   

~     

>     


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.