Twig হলো Symfony-এর টেমপ্লেট ইঞ্জিন, যা HTML আউটপুট তৈরিতে ব্যবহৃত হয়। Twig ফিল্টার এবং ফাংশন দুইটি অত্যন্ত শক্তিশালী টুল যা টেমপ্লেটের মধ্যে ডেটা প্রক্রিয়া, ফরম্যাট এবং কাস্টমাইজেশনের কাজ করতে ব্যবহৃত হয়। এই ফিল্টার এবং ফাংশন ব্যবহার করে আপনি সহজেই আপনার টেমপ্লেটের ডেটাকে কাস্টমাইজ করতে পারেন।
Twig ফিল্টার (Twig Filters)
Twig ফিল্টার ব্যবহার করে আপনি টেমপ্লেটের মধ্যে পাস করা ডেটা পরিবর্তন বা ফরম্যাট করতে পারেন। ফিল্টারগুলি একটি ডেটার উপর কাজ করে এবং একটি নতুন আউটপুট তৈরি করে।
ফিল্টারের মৌলিক ব্যবহার:
ফিল্টার সাধারণত | (পাইপ) চিহ্ন দিয়ে ব্যবহৃত হয়। এটি একটি পরিবর্তন বা প্রসেসিং ফাংশন হিসেবে কাজ করে।
ফিল্টার ব্যবহার উদাহরণ:
{{ 'hello'|upper }} {# আউটপুট হবে "HELLO" #}
{{ 'hello world'|title }} {# আউটপুট হবে "Hello World" #}
প্রধান Twig ফিল্টারের উদাহরণ:
upperএবংlower:
টেক্সটকে বড় বা ছোট হাতের অক্ষরে রূপান্তর করে।{{ 'hello'|upper }} {# "HELLO" #} {{ 'HELLO'|lower }} {# "hello" #}length:
স্ট্রিং বা অ্যারে/অবজেক্টের দৈর্ঘ্য বের করতে ব্যবহার করা হয়।{{ 'hello'|length }} {# 5 #}date:
একটি তারিখের ফরম্যাট পরিবর্তন করতে।{{ '2024-12-08'|date('Y-m-d') }} {# "2024-12-08" #}replace:
একটি স্ট্রিং-এর অংশ পরিবর্তন করতে ব্যবহার করা হয়।{{ 'hello world'|replace({'world': 'Symfony'}) }} {# "hello Symfony" #}join:
একটি অ্যারের সব আইটেমকে একটি স্ট্রিংয়ে যোগ করে।{{ ['apple', 'banana', 'cherry']|join(', ') }} {# "apple, banana, cherry" #}default:
যদি কোনো ভ্যালুnullবা ফাঁকা থাকে, তবে ডিফল্ট মান প্রদান করা হয়।{{ username|default('Guest') }} {# যদি username ফাঁকা থাকে, তবে "Guest" দেখাবে #}
Twig ফাংশন (Twig Functions)
Twig ফাংশন আপনাকে টেমপ্লেটের মধ্যে বিভিন্ন প্রকারের প্রোগ্রামিং লজিক এক্সিকিউট করতে দেয়। এটি আরও জটিল কনভার্সন বা অপারেশন করতে সহায়ক।
ফাংশনের মৌলিক ব্যবহার:
Twig ফাংশনকে সাধারণত আর্গুমেন্টসহ কল করা হয়। উদাহরণস্বরূপ:
{{ '2024-12-08'|date('l, F j, Y') }}
প্রধান Twig ফাংশনের উদাহরণ:
pathফাংশন:
রাউটের URL তৈরি করতে ব্যবহৃত হয়।<a href="{{ path('homepage') }}">Home</a>assetফাংশন:
পাবলিক ফাইলের সঠিক URL পেতে ব্যবহৃত হয়, যেমন সিএসএস বা জেএস ফাইলের জন্য।<link rel="stylesheet" href="{{ asset('styles.css') }}">includeফাংশন:
অন্য টেমপ্লেট ফাইল ইনক্লুড করতে ব্যবহৃত হয়।{% include 'header.html.twig' %}renderফাংশন:
কন্ট্রোলারের মাধ্যমে টেমপ্লেট রেন্ডার করতে ব্যবহৃত হয়।{{ render(controller('App\\Controller\\HomeController::index')) }}dumpফাংশন:
একটি ভেরিয়েবলের কন্টেন্ট ডাম্প করে দেখতে ব্যবহৃত হয়। ডিবাগিংয়ের জন্য এটি খুব উপকারী।{{ dump(variable) }}constantফাংশন:
একটি কনস্ট্যান্ট মান বের করতে ব্যবহৃত হয়।{{ constant('App\\Entity\\Product::STATUS_ACTIVE') }}
ফিল্টার এবং ফাংশনের পার্থক্য
| ফিচার | ফিল্টার | ফাংশন |
|---|---|---|
| কাজ | একটি ভ্যালুর উপর কাজ করে এবং রূপান্তর করে | কিছু কার্য সম্পাদন করে বা মান প্রদান করে |
| ব্যবহার | ` | ` চিহ্ন দিয়ে ব্যবহৃত হয় |
| উদাহরণ | `{{ 'hello' | upper }}` |
Twig কাস্টম ফিল্টার এবং ফাংশন তৈরি করা
Symfony-তে আপনি নিজের কাস্টম ফিল্টার বা ফাংশনও তৈরি করতে পারেন।
কাস্টম ফিল্টার তৈরি:
- একটি কাস্টম ফিল্টার তৈরি করতে Symfony-তে একটি নতুন Twig Extension তৈরি করতে হবে।
Extension ক্লাস তৈরি করুন:
namespace App\Twig; use Twig\Extension\AbstractExtension; use Twig\TwigFilter; class AppExtension extends AbstractExtension { public function getFilters() { return [ new TwigFilter('reverse', [$this, 'reverseString']), ]; } public function reverseString($string) { return strrev($string); } }Services.yaml-এ এক্সটেনশন রেজিস্টার করুন:
services: App\Twig\AppExtension: tags: ['twig.extension']টেমপ্লেটে ফিল্টার ব্যবহার:
{{ 'hello'|reverse }} {# আউটপুট হবে "olleh" #}
কাস্টম ফাংশন তৈরি:
কাস্টম ফাংশন তৈরি করতে একটি নতুন Twig Extension তৈরি করুন:
namespace App\Twig; use Twig\Extension\AbstractExtension; use Twig\TwigFunction; class AppExtension extends AbstractExtension { public function getFunctions() { return [ new TwigFunction('greet', [$this, 'greet']), ]; } public function greet($name) { return "Hello, $name!"; } }Services.yaml-এ এক্সটেনশন রেজিস্টার করুন (ফাংশনটি কাজ করবে):
services: App\Twig\AppExtension: tags: ['twig.extension']টেমপ্লেটে ফাংশন ব্যবহার:
{{ greet('Symfony') }} {# আউটপুট হবে "Hello, Symfony!" #}
সারাংশ
Twig ফিল্টার এবং ফাংশন Symfony টেমপ্লেট ইঞ্জিনের অত্যন্ত শক্তিশালী টুল। ফিল্টার ব্যবহারের মাধ্যমে আপনি ডেটাকে প্রসেস করতে এবং ফরম্যাট করতে পারেন, যখন ফাংশন ব্যবহার করে আপনি আরও জটিল কাজ যেমন URL তৈরি, ডেটা রেন্ডারিং বা কাস্টম কার্যকরী লজিক ব্যবহার করতে পারেন। এই টুলসটি Symfony ডেভেলপমেন্টকে আরও শক্তিশালী এবং ফ্লেক্সিবল করে তোলে।
Read more