1. මෙම පාඩමේදී අවධානය යොමු කරන ගොනු
මෙම පාඩමේදී අපි නව View ගොනුවක් නිර්මාණය කර, එය අපගේ Route ගොනුවෙන් පාලනය කරමු.
hello-app/
├── resources/
│ └── views/
│ └── greeting.blade.php <-- (මෙම නව ගොනුව සාදන්න)
└── routes/
└── web.php <-- (මෙම ගොනුව edit කරන්න)
2. Blade යනු කුමක්ද?
Blade යනු HTML තුළ PHP කේත පහසුවෙන් ලිවීමට ඉඩ සලසන Laravel හි template engine එකයි. සියලුම Blade ගොනු .blade.php යන නමින් අවසන් විය යුතුය.
3. View ගොනුවක් නිර්මාණය කිරීම
පියවර 1: View ගොනුව සාදන්න
VS Code හි resources/views/ ෆෝල්ඩරය තුළ greeting.blade.php නමින් නව ගොනුවක් සාදා පහත HTML කේතය එයට ඇතුළත් කරන්න.
<!DOCTYPE html>
<html>
<head>
<title>Greeting</title>
</head>
<body>
<h1>A Simple Greeting!</h1>
</body>
</html>
පියවර 2: Route එක සාදන්න
දැන්, routes/web.php ගොනුවට ගොස් මෙම view එක පෙන්වීමට නව route එකක් එක් කරන්න.
use Illuminate\Support\Facades\Route;
Route::get('/greeting', function () {
return view('greeting');
});
http://127.0.0.1:8000/greeting වෙත පිවිසීමෙන් ඔබට දැන් මෙම පිටුව දැකගත හැක.
4. Route එකේ සිට View එකට දත්ත යැවීම
ගතික දත්ත (dynamic data) view එකකට යැවීමට, view() function එකට දෙවන argument එක ලෙස array එකක් ලබා දෙන්න.
Route::get('/user/{name}', function ($name) {
// The key 'username' becomes a variable in the view
return view('greeting', ['username' => $name]);
});
මෙම කේතයේ, 'username' යන key එක, view ගොනුව තුල $username නමින් variable එකක් බවට පත්වේ. එහි අගය වන්නේ URL එකෙන් ලැබෙන $name විචල්යයේ අගයයි.
5. Blade View එක තුල දත්ත භාවිතා කිරීම
Route එකෙන් එවූ දත්ත view එක තුල පෙන්වීමට, Blade හි {{ }} සින්ටැක්ස් එක භාවිතා කරන්න. මෙය PHP හි echo වලට සමාන වේ.
greeting.blade.php ගොනුවේ <h1> tag එක පහත පරිදි වෙනස් කරන්න:
<h1>Hello, {{ $username }}!</h1>
දැන්, ඔබ බ්රව්සරයේ http://127.0.0.1:8000/user/Kamal ලෙස පිවිසෙන විට, {{ $username }} වෙනුවට "Kamal" යන නම ආදේශ වී "Hello, Kamal!" ලෙස දර්ශනය වනු ඇත.
6. පාඩම අවසානයේ සම්පූර්ණ කේත
මෙම පාඩම අවසානයේදී, ඔබගේ ගොනු දෙක පහත දැක්වෙන ස්ථානවල, පෙන්වා ඇති පරිදි දිස්විය යුතුය.
hello-app/
├── resources/
│ └── views/
│ └── greeting.blade.php
└── routes/
└── web.php
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
// Returns a simple string for the home page
Route::get('/', function () {
return 'Welcome to our Home Page!';
});
// This is the main route for this lesson.
// It captures a 'name' from the URL and passes it
// to the 'greeting' view as a 'username' variable.
Route::get('/user/{name}', function ($name) {
return view('greeting', ['username' => $name]);
});
// A simple route to show the static greeting view
// without any dynamic data.
Route::get('/greeting', function () {
return view('greeting');
});
resources/views/greeting.blade.php
<!DOCTYPE html>
<html>
<head>
<title>Greeting</title>
</head>
<body>
<!--
This is where the magic happens.
The 'username' variable passed from the route
is displayed here.
-->
<h1>Hello, {{ $username }}!</h1>
</body>
</html>
use Illuminate\Support\Facades\Route; යන්නෙහි තේරුම
ඔබ routes/web.php ගොනුවේ ඉහලින්ම මෙම රේඛාව දකිනු ඇත. මෙය PHP හි ඉතා වැදගත් සංකල්පයකි.
සරලව කිවහොත්: මෙම රේඛාව මගින් අපගේ ගොනුවට කියවෙන්නේ, "මම මෙම ගොනුව තුළ Route යන වචනය භාවිතා කරන විට, මා අදහස් කරන්නේ Laravel විසින් සපයන ලද විශේෂ Route class එකයි" යන්නයි.
එය ක්රියා කරන ආකාරය
PHP වලදී, සෑම class එකකටම "සම්පූර්ණ නමක්" ඇත. Route class එකේ සම්පූර්ණ නම Illuminate\Support\Facades\Route වේ. use ප්රකාශය මගින් එම දිගු නම අපගේ ගොනුවේ ඉහළින්ම ආයාත (import) කර, පසුව අපට එහි කෙටි නම (Route) භාවිතා කිරීමට ඉඩ සලසයි.
Laravel හි Facades:
Route යනු Laravel හි Facade (උච්චාරණය: "ෆะසාඩ්") එකකට උදාහරණයකි. Facade යනු Laravel හි සංකීර්ණ කොටස් වලට ප්රවේශ වීම සඳහා ලබා දෙන සරල, මතක තබා ගැනීමට පහසු "shortcuts" වේ. Route Facade එක නිසා අපට Route::get(...) වැනි ඉතා පිරිසිදු සහ කියවීමට පහසු කේත ලිවීමට හැකිවේ.
use ප්රකාශය නොමැතිව:
අපි එම රේඛාව භාවිතා නොකළේ නම්, සෑම route එකක්ම ලිවීමේදී අපට සම්පූර්ණ නමම ලිවීමට සිදුවනු ඇත. එය ඉතා අපහසු වේ.
// 'use' ප්රකාශය නොමැතිව (Not Recommended)
\Illuminate\Support\Facades\Route::get('/', function () { ... });
\Illuminate\Support\Facades\Route::get('/user/{name}', function ($name) { ... });
use ප්රකාශය සමඟ:
එය ඉහළින්ම import කිරීමෙන්, අපගේ කේතය වඩාත් පිරිසිදු සහ කළමනාකරණය කිරීමට පහසු වේ.
// 'use' ප්රකාශය සමඟ (Recommended)
use Illuminate\Support\Facades\Route;
Route::get('/', function () { ... });
Route::get('/user/{name}', function ($name) { ... });