লারাভেল এর সাথে ব্লেড টেমপ্লেট ইঞ্জিন বিল্ড ইন ভাবে এসেছে। আর এটা ব্যাবহার করা খুবই সহজ। ব্লেড টেমপ্লেটে কোড লেখার জন্য ভিউ ফাইলের এক্সটেনশন হতে হবে .blade.php ধরুন আপনার ভিউ ফাইলটির নাম about তাহলে ব্লেড এর ফরমেটে এটি হবে about.blade.php । এখন ব্লেড এর নিয়ম অনুসারে ভিউ পেজ গুলো সাজানোর জন্য একটা মাস্টার পেজ বানাতে হবে যেটাকে এক্সটেন্ড করে অন্য ভিউ গুলো বানাতে হবে। তাহলে আমরা যদি about এর জন্য একটি ভিউ বানাই ব্লেড এর নিয়ম অনুযায়ী, প্রথমে route এ about ডিফাইন করতে হবে তারপর মাস্টার পেজ বানাইতে হবে তারপর about পেজটি বানাইতে হবে। নিচে ধারাবাহিক ভাবে কোড গুলো দেখানো হল।
এখন ধরুন আপনাকে বিশেষ ক্ষেত্রে কনটেন্ট সেকশন অথবা অন্য কোন সেকশনের জন্য ডিফল্ট কনটেন্ট/ডাটা রাখতে হচ্ছে তাহলে আপনাকে yield মেথডটিতে দ্বিতীয় প্যারামিটার পাস করে এটা করতে হবে।
@yield('section','Default Content')
ব্লেডে ডাটা echo করার জন্য ডাবল কারলি ব্রাকেট ব্যাবহার করতে হয়।
Hello, {{ $name }}.The current UNIX timestamp is {{ time() }}.
এইক্ষেত্রে ভেরিয়েবল ডিফাইন করার জন্য ব্লেডের কমেন্টস ব্যাবহার করতে হবে নিচের মত করে।
এবার ব্লেডে কন্ট্রোল স্ট্রাকচার সহ অন্যান্য ফিচার গুলো ধারাবাহিক ভাবে দেখানো হল।
If Statements এর জন্য নিচের পদ্ধ্যতি অনুসরন করুন।
@if (count($records)===1) I have one record!@elseif (count($records)>1) I have multiple records!@else I don't have any records!@endif@unless (Auth::check()) You are not signed in.@endunless
Loops এর জন্য নিচের পদ্ধ্যতি অনুসরন করুন।
@for ($i =0; $i <10; $i++) The current value is {{ $i }}@endfor@foreach ($users as $user)<p>This is user {{ $user->id }}</p>@endforeach@forelse($users as $user)<li>{{ $user->name }}</li>@empty<p>No users</p>@endforelse@while (true)<p>I'm looping forever.</p>@endwhile
একটা ভিউ ফাইলে অন্য ভিউ ফাইল ইনক্লুড করার জন্য নিচের মত করে লিখতে হবে।
@include('view.name')
আর আপনি চাইলে ভিউ ফাইল ইনক্লুড করার সমই ডাটা পাস করতে পারেন এইভাবে।
@include('view.name', ['some'=>'data'])
কমেন্টস লিখতে চাইলে।
{{-- This comment will not be in the rendered HTML --}}
ব্লেড টেমপ্লেটিংঃ HTML ও Forms
লারাভেল এর ব্লেড টেমপ্লেট ব্যবহার করে HTML ও Forms তৈরি করতে আমাদের একটি "Third party package" প্রয়োজন হবে। আসুন জেনে নেই কি ভাবে আমরা এই সুবিধা আমাদের প্রোজেক্ট এ আনতে পারি।
প্রোজেক্ট ডিরেক্টরি এর মুল পাথে composer.json নামে একটি ফাইল আছে যেটা আমাদের প্রোজেক্ট এর প্রয়োজনীয় প্যাকেজ গুলার তালিকা রাখে। ফাইলটির প্রথম কিছু অংশ অনেকটা এরকমঃ
এখানে 'POST' মেথড দিবে যদি অন্য কোন মেথড আমরা উল্লেখ না করি। সাথে একটি html <input type="hidden" value="hbyt7fA7MW09iT8V54z2V5u8j0mFFJJckSs7XI9G" name="_token"> যা আমাদের সিকুইরিটি বাড়াবে।
এবার, নানা ধরনের input element গুলো আমাদের ফর্মে যোগ করিঃ
কিন্তু আমরা এই ফর্ম এর সাথে CSS দিবো, আমাদের id, class ও নানা ধরনের attribute ও যোগ করতে হবে। পূর্ববর্তী অনুশীলনে আমরা Twitter Bootstrap দিয়েছিলাম, এবার এই অনুশীলনে
ভিউ তে blade ব্যবহার করে ভিউ আরও ব্যবহার যোগ্য করবো
Form এর জন্য নতুন Template বানাবো, রাউট সেট করবো
লারাভেল blade ও Twitter Bootstrap মিলিয়ে একটি Form তৈরি করবো
অনুশীলনঃ গত অধ্যায় এ আমরা ভিউ এবং এই অধ্যায় এ blade template দেখলাম। আসুন একটি master.blade.php ফাইল বানাই resources/views এর ভিতর।
@yield('title') ও @yield('content') এর মানে title ও content নামে চাইল্ড টেমপ্লেটে কোনও section থাকলে এই অংশে দেখাবে। এটা আমারা একটি "Parent template" বানালাম।
এবার একটি "Child Template" বানাই উপরের blade template ব্যবহার করে যে Form টি বানিয়েছি সেটা নিয়ে। resources/views এর ভিতর pages নামে একটি ডাইরেক্টরি ও তার ভিতর form.blade.php নামে ফাইল তৈরি করি। এবং নিচের code গুলা লিখি।
@extends('master') মানে এই ফাইলটি views এর ভিতর যে master.blade.php আছে সেটি ব্যবহার করবে। @section('title', 'Forms') এটি section, প্রথম প্যারামিটারটি section এর নাম ও দ্বিতীয় প্যারামিটারটি section এর value. Valueটি যদি এমন একটি স্ট্রিং হয় তো এভাবেই লেখা যায়। কিন্তু দেখেন content নামের sectionটি শুধু প্রথম প্যারামিটারটি ব্যবহার করে নামটি দিয়েছে পরে এর বিশাল value দিয়েছে এবং অবশেষে @endsection লিখে sectionটি শেষ করেছে।
ফাইল তো হল, এদের জন্য রাউট তৈরি করি। routes/web.php ফাইলটি খুলে নিচের মত রাউট বানাই। আগের অনুশীলন গুলো করে থাকলে এটা আপনার জন্য খুবি সহজ।