Bài 4. Sử dụng template engine trong PHP (Smarty template)

1. Cài đặt Smarty vào project

  • Tạo thư mục để chứa source code thư viện smarty
  • Tải smarty tại trang web: http://www.smarty.net/download
  • Giải nén thư mục vừa tải về, chỉ cần dùng thư mục “libs”
  • Chép mọi thứ trong thư mục “libs” vào DOCUMENT_ROOT\smarty_example\smarty
  • Cấu trúc thư mục của thư mục project như sau:
DOCUMENT_ROOT (e.g c:/Apache24/htdocs)

|-smarty_example

|-smarty

|-view

|-view_c

2. Ví dụ đơn giản

a. Chuẩn bị file template để hiển thị có tên “index.tpl”

View này sẽ hiển thị biến “name” ra ngoài màn hình.

4

b. Chuẩn bị back-end để cung cấp dữ liệu cho view

Chúng ta sẽ chuẩn bị khởi tạo smarty để nó có thể hoạt động. Đồng thời, cũng thực hiện chuẩn bị dữ liệu để hiển thị ra view.

Đầu tiên, chúng ta phải khai báo smarty trong PHP, sau đó cấu hình các thư mục cần thiết như: view (chứa các template dạng .tpl), view_c (các template đã compile ra dạng .php) để smarty có thể hoạt động. Sau đó để sử dụng một biến nào đó của PHP trong smarty, ta thực hiện gán biến đó qua smarty bằng lệnh “assign”. Cuối cùng để gọi view, ta gọi hàm “display”.

4

3. Tinh chỉnh Smarty để sử dụng thuận tiện hơn (Cá nhân hóa Smarty)

Ta sẽ tạo 1 lớp mới mang tên “mySmarty” để bọc lớp “Smarty” gốc lại, nhằm có thể thực hiện được các cấu hình mong muốn. Ta có thể đặt file này ở bất cứ đâu, nhưng để thuận tiện, ta thường đặt file này chung thư mục chứa Smarty của project.4

Như vậy, ta chỉ cần cấu hình đường dẫn để smarty chứa các file compiled và thư mục chứa các file template một lần duy nhất. Sau này khi sử dụng smarty, ta sẽ sử dụng lớp  “mySmarty” thay cho lớp “Smarty”, và không cần phải cấu hình gì thêm. Ví dụ (ở mục 2) sẽ được viết lại file back-end như sau:4

4. Cú pháp Smarty đơn giản

a. Biến

4

b. Hàm và thuộc tính

{funcname attr1=”val1″ attr2=”val2″}

Every Smarty tag either prints a variable or invokes some sort of function. These are processed and displayed by enclosing the function and its attributes within delimiters like so: {funcname attr1=”val1″ attr2=”val2″}.
Attributes to Smarty functions are much like HTML attributes. Static values don’t have to be enclosed in quotes, but it is required for literal strings.4

c. Escape mã thực thi

{literal} tags allow a block of data to be taken literally. This is typically used around Javascript or stylesheet blocks where {curly braces} would interfere with the template delimiter syntax.

4

d. Các hàm có sẵn trong Smarty

{if},{elseif},{else}4

{for}

4

4

{foreach} {foreachelse}

4

4

{include}

It’s used for including other templates in the current template. Any variables available in the current template are also available within the included template.

4

{assign}

It is used for assigning template variables during the execution of a template.4

{strip}

Anything within {strip}{/strip} tags are stripped of the extra spaces or carriage returns at the beginnings and ends of the lines before they are displayed.

4

{capture}

It is used to collect the output of the template between the tags into a variable instead of displaying it

4

Link code tham khảo: https://drive.google.com/open?id=0B-5fkWexH-GOY2lOQ2szSExGWmM

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s