Twig হলো Symfony-এর জন্য একটি অত্যন্ত জনপ্রিয় এবং শক্তিশালী টেমপ্লেট ইঞ্জিন, যা HTML কোড লেখার জন্য ব্যবহৃত হয়। Twig ব্যবহার করে Symfony অ্যাপ্লিকেশনে ডাইনামিক কন্টেন্ট, কন্ডিশনাল লজিক, এবং লুপিং করা সহজ হয়ে ওঠে। এটি একটি ফ্লেক্সিবল, সিকিউর এবং দ্রুত টেমপ্লেটিং ইঞ্জিন, যা ডেভেলপারদের কোড লেখা, পুনঃব্যবহারযোগ্যতা এবং রিডেবিলিটি বাড়াতে সহায়ক।
এখানে Twig-এর মৌলিক সিনট্যাক্স এবং বেসিক ব্যবহার নিয়ে আলোচনা করা হবে।
Twig সিনট্যাক্স
Twig-এ মূলত তিন ধরনের চিহ্ন ব্যবহৃত হয়:
{{ }}(ডাটা আউটপুট):
ডাটা বা ভ্যারিয়েবল আউটপুট করার জন্য ব্যবহৃত হয়।উদাহরণ:
<h1>{{ title }}</h1>এখানে
titleভ্যারিয়েবলটি HTML পেজে আউটপুট হবে।{% %}(লজিক্যাল স্টেটমেন্ট):
লজিকাল কন্ট্রোল স্টেটমেন্ট (যেমন if, for) ব্যবহারের জন্য ব্যবহৃত হয়।উদাহরণ:
{% if user.isLoggedIn %} <p>Welcome back, {{ user.name }}!</p> {% else %} <p>Please log in.</p> {% endif %}{# #}(কমেন্ট):
কোডের মধ্যে মন্তব্য যোগ করার জন্য ব্যবহৃত হয়। এগুলো HTML আউটপুটে দেখা যাবে না।উদাহরণ:
{# This is a comment #}
Twig বেসিক ব্যবহার
১. ভ্যারিয়েবল আউটপুট
Twig-এর মধ্যে ভ্যারিয়েবল আউটপুট করার জন্য {{ }} ব্যবহৃত হয়। Symfony কন্ট্রোলার থেকে পাঠানো ডাটা Twig টেমপ্লেটে সহজেই রেন্ডার করা যায়।
কন্ট্রোলার:
public function index(): Response
{
$data = [
'title' => 'Welcome to Symfony',
'username' => 'JohnDoe'
];
return $this->render('home/index.html.twig', $data);
}
Twig টেমপ্লেট:
<h1>{{ title }}</h1>
<p>Hello, {{ username }}!</p>
২. কন্ডিশনাল লজিক
Twig-এ if স্টেটমেন্ট ব্যবহার করে কন্ডিশনাল লজিক পরিচালনা করা যায়।
{% if user.isLoggedIn %}
<p>Welcome back, {{ user.name }}!</p>
{% else %}
<p>Please log in to continue.</p>
{% endif %}
এখানে if স্টেটমেন্টের মাধ্যমে চেক করা হয়েছে, যদি ব্যবহারকারী লগইন করা থাকে, তবে তাকে স্বাগত জানানো হবে; অন্যথায়, লগইন করতে বলা হবে।
৩. লুপিং
Twig-এ for লুপ ব্যবহার করে একটি অ্যারে বা কালেকশন রেন্ডার করা যায়।
<ul>
{% for product in products %}
<li>{{ product.name }} - ${{ product.price }}</li>
{% endfor %}
</ul>
এখানে products অ্যারে বা কালেকশন থেকে প্রতিটি product রেন্ডার হচ্ছে।
৪. ফিল্টার
Twig ফিল্টার ব্যবহার করে আপনি ভ্যারিয়েবল বা ডেটার উপর নির্দিষ্ট পরিবর্তন করতে পারেন, যেমন বড় অক্ষরে পরিবর্তন, তারিখ ফরম্যাট ইত্যাদি।
<p>{{ username|upper }}</p> {# Converts 'username' to uppercase #}
<p>{{ date|date("Y-m-d") }}</p> {# Formats the date variable in "Y-m-d" format #}
৫. ব্লক এবং ইনহেরিটেন্স
Twig টেমপ্লেটের মধ্যে ব্লক এবং টেমপ্লেট ইনহেরিটেন্স ব্যবহার করা যায়। একে অন্য টেমপ্লেট থেকে অংশ বা ফিচার উত্তরাধিকারসূত্রে নেওয়া যেতে পারে।
বেস টেমপ্লেট (base.html.twig):
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}My Symfony App{% endblock %}</title>
</head>
<body>
<div class="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
চাইল্ড টেমপ্লেট (home/index.html.twig):
{% extends 'base.html.twig' %}
{% block title %}Home{% endblock %}
{% block content %}
<h1>Welcome to the Homepage!</h1>
{% endblock %}
এখানে home/index.html.twig বেস টেমপ্লেট থেকে ব্লক ইনহেরিট করে, এবং সেই ব্লকগুলোকে কাস্টমাইজ করে।
৬. ইনক্লুডিং টেমপ্লেট
Twig-এ অন্য টেমপ্লেট ইনক্লুড করার জন্য include ট্যাগ ব্যবহার করা হয়। এটি কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়।
{% include 'partials/header.html.twig' %}
এখানে header.html.twig টেমপ্লেটটি বর্তমান টেমপ্লেটে ইনক্লুড করা হবে।
৭. অ্যারে এবং অবজেক্টস
Twig-এ আপনি অ্যারে বা অবজেক্ট ব্যবহার করতে পারেন এবং তার বৈশিষ্ট্য বা মান রেন্ডার করতে পারেন।
অ্যারে ব্যবহার:
{% set user = {'name': 'John', 'age': 25} %}
<p>{{ user.name }} is {{ user.age }} years old.</p>
অবজেক্ট ব্যবহার:
<p>{{ user.name }}</p>
<p>{{ user.getAge() }}</p>
সারাংশ
- Twig একটি শক্তিশালী টেমপ্লেট ইঞ্জিন যা Symfony প্রজেক্টে HTML রেন্ডার করতে ব্যবহৃত হয়।
- ডাটা আউটপুট এবং কন্ডিশনাল লজিক পরিচালনা করতে
{{ }}এবং{% %}সিম্বল ব্যবহৃত হয়। - ফিল্টার, লুপিং, ব্লক, এবং ইনহেরিটেন্স সহ আরও অনেক বৈশিষ্ট্য Twig-এ পাওয়া যায়, যা ডেভেলপারদের কোড লেখাকে সহজ এবং কার্যকর করে তোলে।
- Twig সিকিউর এবং দ্রুত, যা Symfony অ্যাপ্লিকেশনের টেমপ্লেটিং সিস্টেমে ব্যবহৃত হয়।
Read more