2010-01-01

Bước đầu dùng smarty

1/01/2010 09:39:00 PM Posted by Hoàng Dũng No comments
ớc đầu dùng smarty – template engine dành
cho lập trình PHP
Khái niệm template engine vốn khá quen thuộc với tất cả những ai lập trình đặc biệt là lập trình web, khi mà chương trình đòi hỏi chạy ở 2 nơi (server – client). Đồng thời, template engine còn tạo sự độc lập trong lập trình và thiết kế giúp tránh lỗi không mong muốn cũng như phân chia công việc khi làm group rất hiệu quả. Tất nhiên không chỉ có vậy mà template engine còn nhiều điểm cần thiết nửa, nhất là Smarty vốn là template engine khá phổ biến trong thế giới PHP và được nhiều người ưa chuộng. Tuy vẫn còn có những khuyết điểm nhưng tư tưởng và kết quả smarty đạt được đáng được học hỏi và vận dụng đúng mức.

Thông tin về mã nguồn và document thì có thể down ở đây:
http://smarty.net
Thông tin về các ý kiến phản đối cũng như những khuyết điểm của smarty có thể xem ở đây
http://nosmarty.net
Thông tin về source code cho ví dụ này có thể down ở đây:
http://bkitweb.com/store/Smarty-1.zip

Tất cả những gì chúng ta cần là 1 webserver chạy được PHP và 1 thư viện smarty down từ trang của smarty ở trên. Sẵn tiện hãy down luôn document của nó.

Sau khi tải smarty về và giải nén chúng ta sẽ có 1 thư mục Smarty. Hãy giải nén nó váo thư mục $ROOT của webserver.

Bây giờ hãy chú ý đến thư mục libs. Chúng ta sẽ chỉ dùng đến thư mục này vì đây là thư mục chứa toàn bộ thư viện smarty vì vậy nếu muốn thì có thể tham khảo những đặc điểm kèm theo nếu không thì hãy xóa hết tất cả những thứ khác và để lại chỉ thư mục libs thôi.

Tiếp theo là công tác chuẩn bị. Để smarty hoạt động chúng ta sẽ cần đến 1 thư mục chứa template, 1 thư mục chứa cache, một thư mục chứa thông tin cấu hình và một thư mục chứa thông tin compile của smarty. Vì vậy hãy tạo thư mục dạng như sau:


Tiếp theo hãy tạo file index.php trong thư mục gốc như hình và dùng đoạn mã sau:

require 'libs/Smarty.class.php'; //1
$smarty = new Smarty();//2
$smarty->compile_check = true;//3
$smarty->debugging = true;//4
$smarty->cache_dir = "cache";//5
$smarty->template_dir = "template";//6
$smarty->compile_dir = "compile";//7
$smarty->cache_lifetime = 60;//8
$smarty->config_dir = "config";//9
$smarty->caching = false;//10
$smarty->right_delimiter = "}";//11
$smarty->left_delimiter = "{";//12
//start to assign data
$smarty->assign("groupName", "Bkitweb");//13
$smarty->assign("title", "Hello smarty!!!");//14
$smarty->assign("members",array("John","Mary","James","Henry"));//15
//end of assign data
$smarty->display('index.tpl');//16
?>
Trên đây là đoạn mã khởi tạo smarty với những thông số cấu hình thông dụng nhất. Trước khi giải thich chi tiết từng phần chúng ta cần chạy được cái đã. Hãy chú ý dòng 16 cuối cùng đang dùng đến file template là index.tpl, ngay bây giờ hãy tạo 1 file tên index.tpl trong thư mục template sau đó đưa nội dung vào như sau:


</font></font></font><br> <font size="3"><font color="Black"><font face="&quot">{$title}</font></font></font><br> <font size="3"><font color="Black"><font face="&quot">



{$groupName}


{foreach from=$members item=member}
Member name: {$member}

{/foreach}



Và cuối cùng, hãy chắc rằng thư mục compile, cache được phép ghi. Hãy vào trình duyệt và chạy http://yourdomain/Smarty/ , nếu không có vấn đề gì thì sẽ xuất hiện trang web như sau:



This image has been resized. Click this bar to view the full image. The original image is sized 721x402.


Trong hình trên thì ngoài trang web chính còn có 1 cửa sổ mở ra để hiện thông tin debug. Để không hiển thị cửa sổ này hãy edit dòng 4 trong file index.php thành
$smarty->debugging = false;//4
Và nếu như mọi thứ cho đến thời điểm này đều diễn ra như mong muốn thì bạn đã thực sự làm chủ được smarty trong ứng dụng của bạn trong việc cấu hình nó. Còn bây giờ chúng ta sẽ đi vào chi tiết về cách mà smarty hoạt động cũng như cấu hình nó bằng cách phân tích từng dòng trong file index.php
1.require 'libs/Smarty.class.php'; // đưa thư viện của smarty vào, trong file này chứa thông tin định nghĩa class smarty mà chúng ta dùng
2.$smarty = new Smarty();// khởi tạo 1 instance của lớp Smarty
3.$smarty->compile_check = true;// bật chế độ kiểm tra lổi khi compile
4.$smarty->debugging = true;// bật chế độ debug
5.$smarty->cache_dir = "cache";// chọn thư mục chứa cache
6.$smarty->template_dir = "template";// chọn thư mục chứa template, smarty sẽ tìm những file tpl trong đây để compile
7.$smarty->compile_dir = "compile";// thư mục chứa dữ liệu tam khi compile của smarty
8.$smarty->cache_lifetime = 60;//đặt thời gian sống của cache, tính bằng giây
9.$smarty->config_dir = "config";//chọn thư mục chứa flie cấu hình
10.$smarty->caching = true;//Bật chế độ cache lại thông tin sau khi compile
11.$smarty->right_delimiter = "}";//quy định dấu đóng dòng lệnh của smarty
12.$smarty->left_delimiter = "{";//quy định dấu mở dòng lệnh của smarty
13.Đăng ký biến với smarty
//start to assign data
$smarty->assign("groupName", "Bkitweb");//13
$smarty->assign("title", "Hello smarty!!!");//14
$smarty->assign("members",array("John","Mary","James","Henry"));//15
//end of assign data
Chú ý phương thức assign dùng để đăng ký một biến từ PHP sang cho template dùng. Ví dụ với dòng 13 thì trong file template sẽ gọi biến đó bằng {$groupName}
14.Show smarty với template chỉ định
$smarty->display('index.tpl');//16
Smarty sẽ tự động tìm trong thư mục chứa template đã chỉ định để thể hiện file cần thiết với phương thức display.

Vậy là mọi chuyện về cấu hình và gọi template xem như hoàn thành. Trước khi đi vào vài dòng lệnh cơ bản ở file index.tpl chúng ta sẽ khảo sát vài chức năng của thông số cấu hình smarty xem nó hoạt động ra sao. Bây giờ hãy xóa hết mọi thứ tạo ra trong thư mục compile và cache sau đó sửa dòng 10 lại thành
$smarty->caching = false;//10
Chạy lại trang web và chúng ta se chú ý rằng trong thư mục cache không có gì được tạo ra. Hãy xóa 2 thư mục đó lần nửa và cho dòng 10 lại thành true và chạy lại thì sẽ thấy thư mục cache có 1 file. Đây chính là cache mà smarty tạo ra, việc tạo cache này có thể sẽ làm chậm xử lý trong lần đầu nhưng sau đó thì quá trình sẽ nhanh hơn rất nhiều vì chỉ cần compile lại những khi dữ liệu thay đổi. Tương tự hãy tùy biến những thông số khác để có thể hiểu hơn về smarty.

Tiếp theo chúng ta sẽ nói sơ qua về file index.tpl. File này thật sự tách biệt với mã PHP hoàn toàn thích hợp với designer – họ chỉ cần dữ liệu để thể hiện chứ không cần xử lý dữ liệu.
Theo như file index.tpl ở trên thì chúng ta sẽ viết giống như 1 file HTML thông thường nhưng những gì chúng ta cần thể hiện khi đã xử lý bằng PHP thì hoàn toàn có thể gọi ra ở đây bằng cách đơn giàn nhất là {$varName}
Như đã thấy file index.php thì chúng ta đăng ký 3 biến là : title, groupName, members nên chúng ta sẽ dùng chúng trong file index.tpl bằng cách gọi biến ra. Ngoài ra chú ý dòng sau:
{foreach from=$members item=member}
Member name: {$member}

{/foreach}
Do biến $members là 1 array nên chúng ta sẽ gọi ra bằng 1 cách khác. Chúng ta sẽ bàn kỹ về những câu lệnh này vào 1 bài khác về “các lệnh hổ trợ trong smarty”.Còn bài này chỉ giới thiệu đến đây.
Sự tách biệt rõ rang của designer và programmer hoàn toàn có thể làm được với cách này nhưng tất nhiên không chỉ hổ trợ như vậy mà còn rất nhiều chức năng khác nửa của smarty mà bkitweb sẽ giới thiệu nhanh chóng vào các bài sau. Tất cả sẽ làm cho việc thiết kế giao diện trở nên nhẹ nhàng thoải mái và giúp vấn đề về ngôn ngữ cũng như cách thể hiện của hệ thống cải thiện đáng kể

Nguồn: bkitclub.net

0 comments:

Post a Comment

Note: Only a member of this blog may post a comment.