Intelligence Development Program - Lập trình thông minh - Blog về học lập trình, mã nguồn, phần mềm, công nghệ mới mực in mã vạch, chip xử lý mã nguồn.

LẬP TRÌNH PHP VỚI SMARTY TEMPLATE




Smarty là một hệ thống tạo mẫu web (web template system) được viết trên nền PHP. Smarty được giới thiệu như là một công cụ cho việc chia nhỏ các quá trình thiết kế trang web. Đây là một chiến lược thiết kế cho các ứng dụng web hiện đại. Smarty tạo ra các nội dung web từ các vị trí đặc biệt được gọi là smarty tag . Các tag này được nằm trong các mẫu (template). Các tag này sẽ được xử lý và chèn vào với các code khác nhau.


Các tag này là chỉ thị cho Smarty mà có thể được bao đóng bới tag mở và tag khóa. Những hướng dẫn này có thể là biến, và được định nghĩa bởi dấu dollar ($), các chức năng, hàm logic hoặc các luồng điều khiển. Smarty cho phép các lập trình viên có thể tự định nghĩa các chứng năng và truy cập sử dụng các Smarty tags Smarty là kết quả của việc tối ưu hóa và phân luồng công việc, cho phép trình diễn các trang web bằng cách chia nhỏ chúng ở đầu cuối (back-end). Ý tưởng đó đã giúp giảm thiểu rất nhiều giá thành và sự đồ sộ của các phần mềm. Dưới mỗi một ứng dụng thành công thì luôn phân chia thành 2 mảng là người thiết kế chính là lá chắn bảo về mã nguồn sau (back-end coding) và người lập trình php được bảo vệ bới mã trình diễn. Smarty hỗ trợ một vài ngôn ngữ lập trình bậc cao, bao gồm:

điều khiển luồng dữ liệu, foreach
if, elseif, else
biến thay đổi
Người dùng tạo chức năng
Bên cạnh đó, thì một trong những chức năng nổi bật của các Template Engine là hệ thống tạo mẫu cho phép thay đổi từ mẫu tới mẫu. Thông thường khi lập trình PHP bạn hay viết lẫn cả phần HTML với mã lệnh PHP trên một trang. Điều này sẽ dẫn đến rất rối nhất là khi bảo trì. Bạn là người viết ra và cũng là người bảo trì thì không sao nhưng nếu bạn viết ra sau đó người khác bảo trì. Chắc họ nhìn vào code của bạn họ sẽ ngất mất vì quá rối. Mặt khác khi làm nhiều trang web có chức năng như nhau. Chỉ khác giao diện nên nếu lập trình theo kiểu như vậy bạn phải viết lại hoàn toàn. Ngoài ra muốn code được bạn phải chờ người thiết kế giao diện cho bạn sau đó cắt ra file HTML... rồi mới code... Tất cả những điều này sẽ làm giảm năng xuất công việc của bạn đi rất nhiều. Smarty ra đời đã giải quyết được các vấn đề nêu trên. Dưới đây là một số ưu điểm của Smarty:

1.Tốc độ load trang rất nhanh (do tạo được cache)

2.Code ứng dụng của bạn trở lên trong sáng, mạch lạc và dễ bảo trì hơn rất nhiều (do tách biệt phần code và templates).

3.Hiệu quả công việc đạt tối đa (Người thiết kế và người lập trình làm việc hoàn toàn độc lập. Thay đổi giao diện website nhanh chóng... )

4.Được sử dụng phổ biến ( bên Nhật rất ưa chuộng Smarty )

Nguồn http://vi.wikipedia.org/wiki/Smarty
Download smarty.

Giải nén vào thư mục /path/to/

Ví dụ: \htdocs\pro\

hoặc /public_html/pro/

Code:


<?php
 define(’SMARTY_DIR’, ‘/path/to/Smarty/’);
 require_once(SMARTY_DIR. ‘Smarty.class.php’);
 ?>
Tạo lớp:
Code:

<?php
 $smarty = new Smarty();
 ?>
Triệu gọi các phương thức và gán giá trị:
Code:


<?php
 $smarty->compile_check = true // kiểm tra xem template đã có thay đổi gì không, nếu có, nạp dữ liệu mới
 $smarty->caching = true // bật hàm caching
 ?>
Ta cần 4 folders :

- templates: Chứa các file Templates, có thể tạo thêm các thư mục con (subfolder)
- templte_c: Chứa các file templates được Smarty biên dịch
- configs: Chứa các tệp tin cấu hình
-cache: lưu bộ đệm templates Cache) // tùy chọn

Smarty luôn tìm những folder này khi php hoạt động. Ta có thể định đường dẫn như thế này:
Code:


<?php
 $smarty->template_dir   = ‘/path/to/Template_Folder/’;
 $smarty->compile_dir    = ‘/path/to/Template_c_Folder/’;
 $smarty->config_dir     = ‘/path/to/Config_Folder/’;
 $smarty->cache_dir      = ‘/path/to/Cache_folder/’;
?>
1) Đưa một giá trị (value) đến Smarty Class.
Code:


<?php
 // Array, có thể lấy từ Database
$array = array(
 0 => array( ‘id’ => 1,
 ‘text’ => ‘test’),
 1 => array( ‘id’ => 2,
 ‘text’ => ‘foobar’ ),
 2 => array( ‘id’ => 3,
 ‘text’ => ‘another test’
 ));
$test   = ’string’;
 $test2  = 2;
$smarty->assign(’test_array’,   $array);
 $smarty->assign(’test’,         $test);
 $smarty->assign(’test2′,        $test2);
 ?>
2) Tích hợp Template.tpl
Code:

<body>
<table><tr>
 Variable test : {$test}
 Variable test2 : {$test2}
{foreach from=$test_array item=arr}
 Item ID : {$arr.id}
 Text From : {$arr.text}
 {/foreach}
 </tr></table></body>
Template sẽ hiển thị 2 thông số Test & Test2 như đã định trong têp .php , kế tiếp lệnh foreach sẽ được kích họat.Trong loop này bao gồm 2 Params có trị số from và item .from là thuộc tinh array và item là tên biến được trả về với biến {$arr.id} tương tự như value của 1 array : $arr['id'].
Thử test xem template có work không nha. vd:tên tệp của template là test.tpl
Code:

<?php
 $smarty->display(’test.tpl’);
 ?>
Nếu trình duyệt xuất ra dòng Text thì bạn đã thành công. Smarty còn nhiều function khác nữa.Đây chỉ là một gợi ý nhỏ cho việc sự dụng Smarty Template.

test_file.php:
Code:

<?php
define(’SMARTY_DIR’, ‘/xampp/htdocs/smarty/libs/’);
 require_once(SMARTY_DIR. ‘Smarty.class.php’);
$smarty = new Smarty;
$smarty->compile_check = true;
 $smarty->debugging = true;
 //$smarty->caching = true // bật hàm caching
$array = array(
 0 => array( ‘id’ => 1,
 ‘text’ => ‘test’),
 1 => array( ‘id’ => 2,
 ‘text’ => ‘foobar’ ),
 2 => array( ‘id’ => 3,
 ‘text’ => ‘another test’
 ));
$test   = ’string’;
 $test2  = 2;
$smarty->assign(’test_array’,   $array);
 $smarty->assign(’test’,         $test);
 $smarty->assign(’test2′,        $test2);
$smarty->display(’test.tpl’);
?>


test.tpl
Code:
<body><table><tr>
 Variable test : {$test}
 Variable test2 : {$test2}
{foreach from=$test_array item=arr}
 Item ID : {$arr.id}
 Text From : {$arr.text}
 {/foreach}
 </tr></table></body>


test.conf (trong config folder)
Code:
title = Welcome to Smarty!
 cutoff_size = 40
Nguồn sưu tầm

Ebook