Về trang chủ
Nguyễn Dương Thế Vĩ
Nguyễn Dương Thế VĩTài khoản đã xác minh
11-1-2025

Cách sử dụng Smarty trong PHP

Smarty là một công cụ template engine mạnh mẽ và linh hoạt dành cho PHP, giúp tách biệt rõ ràng giữa logic xử lý và giao diện của ứng dụng. Trong bài viết này, chúng ta sẽ tìm hiểu cách cài đặt và sử dụng Smarty để xây dựng các ứng dụng PHP một cách hiệu quả.

#php
Cách sử dụng Smarty trong PHP

1. Giới thiệu về Smarty

Smarty là một công cụ template engine cho PHP, được thiết kế để tách biệt phần giao diện (HTML) và logic ứng dụng (PHP). Smarty giúp giảm sự phụ thuộc giữa hai phần này, giúp mã nguồn dễ quản lý và bảo trì hơn.

2. Cách sử dụng Smarty

2.1. Truyền dữ liệu vào Template

Sử dụng phương thức assign trong PHP:

$smarty->assign('title', 'Trang chủ');
$smarty->assign('user', ['name' => 'Nguyễn Văn A']);
$smarty->display('example.tpl');

Trong file example.tpl:

<h1>{$title}</h1>
<p>Xin chào, {$user.name}</p>

2.2. Câu lệnh if trong Smarty

Dùng để kiểm tra điều kiện trong template. Câu lệnh if đơn giản:

{if $age >= 18}
<p>Bạn là người trưởng thành.</p>
{else}
<p>Bạn chưa trưởng thành.</p>
{/if}

Kết hợp với elseif

{if $age < 18}
<p>Bạn là trẻ vị thành niên.</p>
{elseif $age < 60}
<p>Bạn là người trưởng thành.</p>
{else}
<p>Bạn là người cao tuổi.</p>
{/if}

Kiểm tra tồn tại của biến

{if isset($name)}
<p>Tên của bạn: {$name}</p>
{/if}

2.3. Vòng lặp trong Smarty

Smarty hỗ trợ các vòng lặp như foreach, for, và while. Vòng lặp foreach Dùng để lặp qua mảng. Truyền mảng từ PHP:

$smarty->assign('products', [
    ['name' => 'Sản phẩm 1', 'price' => 100000],
    ['name' => 'Sản phẩm 2', 'price' => 200000],
]);

Hiển thị trong template

<ul>
  {foreach $products as $product}
  <li>{$product.name} - {$product.price} VND</li>
  {/foreach}
</ul>

Lấy chỉ mục (index)

<ul>
  {foreach $products as $index => $product}
  <li>{$index + 1}. {$product.name} - {$product.price} VND</li>
  {/foreach}
</ul>

Vòng lặp for Dùng để lặp qua số lần cố định.

{for $i=1 to 5}
<p>Số: {$i}</p>
{/for}

Vòng lặp while Dùng cho điều kiện phức tạp (ít dùng). Truyền từ PHP

$smarty->assign('count', 0);

Sử dụng trong template

{while $count < 5}
<p>Đếm: {$count}</p>
{assign var="count" value=$count+1} {/while}

3. Hàm trong Smarty

Smarty hỗ trợ nhiều hàm mặc định và cho phép bạn tạo hàm tùy chỉnh.

3.1. Hàm mặc định

  • Escape chuỗi:
<p>Email: {$email|escape}</p>
  • Format số:
<p>Giá: {10000|number_format:2:",":"."} VND</p>
  • Chuyển đổi chữ hoa/chữ thường:
<p>Tên: {$name|upper}</p>
<p>Tên viết thường: {$name|lower}</p>

3.2. Tạo hàm tùy chỉnh

Bạn có thể tạo hàm PHP và sử dụng trong template. Đăng ký hàm PHP

function greetUser($params, $smarty) {
    return "Xin chào, " . $params['name'];
}
$smarty->registerPlugin("function", "greetUser", "greetUser");`

Sử dụng trong template

`
<p>{greetUser name=$name}</p>

4. Kết hợp nâng cao

Lồng ifforeach

<ul>
  {foreach $products as $product} {if $product.price > 150000}
  <li>{$product.name} - {$product.price} VND</li>
  {/if} {/foreach}
</ul>

Gán biến trong vòng lặp

{foreach $products as $product} {assign var="discountedPrice"
value=$product.price*0.9}
<li>{$product.name} - Giá sau giảm: {$discountedPrice} VND</li>
{/foreach}

5. Ưu điểm của Smarty

  • Tách biệt rõ ràng giao diện và logic: Giúp lập trình viên và designer làm việc độc lập.
  • Hỗ trợ cache mạnh mẽ: Cải thiện hiệu suất khi xử lý trang web có lượng truy cập lớn.
  • Dễ mở rộng: Có thể thêm các hàm tùy chỉnh và plugin.
  • Cú pháp dễ học: Gần gũi với HTML và dễ tiếp cận với người mới.
  • Quản lý code tốt hơn: Giảm sự lặp lại với khả năng tái sử dụng template.

Bài viết liên quan