Twig là một trong những template engine PHP mạnh mẽ được sử dụng trong nhiều nền tảng phát triển nổi tiếng như: laravel, symphony, drubal, yii&yii2.  Twig được phát triển nhằm mục đích giải quyết ba vấn đề sau:

  • Fast: Twig tạo ra những template nơi lưu trữ mã PHP thuần đã được tối ưu hóa và rút gọn. Với cấu trúc viết code được quy định sẵn gần sát với ngôn ngữ viết tự nhiên, Twig giúp tiết kiệm thời gian khi phải viết đi viết lại các cấu trúc code phổ biến. Với cơ chế lưu cache các file template này, Twig khiến cho ứng dụng render view ở phía người dùng được load nhanh hơn mà không phải trải qua quá trình xử lý phía sau.
  • Secure: Twig template engine tạo ra một môi trường cô lập thử nghiệm trong lần đầu chạy mã  php đã được complied theo chuẩn của twig, các đoạn code, mã lỗi sẽ không có khả năng runable nếu nó vi phạm các lỗi bảo mật.
  • Flexible: Twig cung cấp một bộ mã nguồn dễ tùy chỉnh, bạn có thể tự tay viết thêm vài thẻ tags, filters để định nghĩa các tác vụ và khối code thường được sử dụng mà không gặp phải bất kì xung đột nào. Ngoài ra việc triển khai Twig trên các framework cũng rất dễ dàng và uyển chuyển.
Twig Template Engine

Twig Template Engine

Tại sao nên sử dụng Twig để viết mã template:

Bản thân php cũng được coi là một template enginer của chính nó, tuy nhiên cách thức viết code và cách xử lý mà nó hỗ trợ không được uyển chuyển và khó khăn đọc hơn so với các nền tảng khác ngoài ra nó còn thiếu và châm cập nhật trong một thời gian rất dài về vấn đề xử lý frontend. Do đó một số template engine đã đang được phát triển để thay thế tác vụ thuần PHP này bằng các cú pháp dễ học, dễ hiểu, dễ kiểm soát với cú pháp ngôn ngữ gần tự nhiên nhất như: Blade của Laravel, Smarty, Twig …

Twig là một trong các Template Engine với cú pháp và mã nguồn trong sáng nhất mà chúng ta có thể tìm thấy. Được phát triển từ bởi Fabien Potencier người tạo ra framework symphony nổi tiếng. Twig  được ứng dụng rộng rãi trong nhiều dự án lớn, Drubal là một ví dụ, Twig được hỗ từ năm 2005 và qua các phiên bản Drubal mới, Twig cũng được cập nhật và thêm thắt các tính năng mới mạnh mẽ.

Cài đặt Twig.

Theo document mới của Twig tại đây.  Hiện tại Twig đã phát hành phiên bản 2.0 với yêu cầu máy chủ hỗ trợ PHP 7.0 trở lên, và bạn có thể cài đặt nó cho dự án của mình thông qua composer với đoạn lệnh sau:

composer require "twig/twig:^2.0"

Load thư viện Twig qua file autoload.php trong thư mục vendors

Sau khi tải và cài đặt gói thư viện Twig thông qua composer, bạn có thể bắt đầu với twig bằng cách nạp các thư viện qua file autoload.php bằng cách sử dụng đoạn mã tương tự sau trong dự án của mình.

require_once '/path/to/vendor/autoload.php';

$loader = new Twig_Loader_Array(array(
    'index' => 'Hello {{ name }}!',
));
$twig = new Twig_Environment($loader);

echo $twig->render('index', array('name' => 'Fabien'))

Giải Thích Đoạn Code Trên

  • Twig_Loader_Array: là bộ nạp chứa đựng các định nghĩa về các file template sẽ được Twig tiến hành biên dịch.
  • Twig_Enviroment: là bộ nạp chưa các thông tin cấu hình, định nghĩa, các biến môi trường, các thông tin tham chiếu cần thiết để Twig chạy đúng chức năng và yêu cầu.
  • render(): hàm render có tác dụng load file template ở đối số 1 và truyền vào giá trị name cho template ở đối số 2 kiểu array.

Đa phần khi render lần đầu tiên, nếu file template không bị lỗi Twig sẽ tạo 1 file bản sao của kết quả này theo cách lưu trữ cached trên ổ đĩa hệ thống. Sử dụng Twig_Loader_Filesystem để tạo ra đối tượng lưu trữ thông tin vị trí của các tệp tin template này.

$loader = new Twig_Loader_Filesystem('/path/to/templates');
$twig = new Twig_Environment($loader, array(
    'cache' => '/path/to/compilation_cache',
));

echo $twig->render('index.html', array('name' => 'Fabien'));

Cú pháp cơ bản của Twig.

Twig đóng vai trò là một engine có tác dụng tạo ra các file render view cho người dùng với cú pháp tự nhiên, đúng chuẩn, nhanh và bảo mật. Các file Template mà twig hỗ trợ không giới hạn ở các phần mở rộng như: html, htm mà có thể là bất cứ file nào với phần mở rộng được định nghĩa trong bộ cấu hình của Twig.

Đa phần các cấu trúc code khi bạn viết bằng PHP thuần đều được TWIG định nghĩa lại với 2 khai niệm giá trị “variables” và  biểu thức “expressions”,  kết hợp với các thẻ “tags” và “filters” được Twig hỗ trợ chúng ta có thể chuyển và thực thi hết tất cả các mã nguồn được viết bằng PHP. Sau đây là một ví dụ đơn giản về việc kết hợp sử dụng giữa html + php + twig

<!DOCTYPE html>
<html>
    <head>
        <title>My Webpage</title>
    </head>
    <body>
        <ul id="navigation">
        {% for item in navigation %}
            <li><a href="{{ item.href }}">{{ item.caption }}</a></li>
        {% endfor %}
        </ul>

        <h1>My Webpage</h1>
        {{ a_variable }}
    </body>
</html>

Tại ví dụ trên bạn sẽ thấy các khối lệnh thường được bao bọc bởi 2 cấu trúc: {% … %}{{ … }}. Cấu trúc đầu tiên được sử dụng để thực thi các khối lệnh login như for, if. Cấu trúc thứ 2 dùng để in ra kết quả của một biến hoặc một biểu thức.

Twig có hỗ trợ các IDE – môi trường phát triển tích hợp:

Là một trong những template engine mạnh mẽ, không lạ gì khi Twig được đa số các IDE hỗ trợ mặc định hoặc qua các plugin đi kèm. Sau đây là danh sách các IDE mà bạn có thể tìm hiểu trước khi bắt đầu code vài dòng lệnh twig.

Hoặc bạn có thể dùng IDE online TwigFiddle  để test nhanh các đoạn code của mình.

About the author

Kevin Dang

Hey there! My name is Kevin Dang, I am website, software, mobile app develop, web admin system. Expert living in Hồ Chí Minh (Việt Nam). I am very interested in digital marketing with: SEO, Facebook, Google Ads ... This blog is where I will share the experiences, techniques and knowledge I have learned.