පෙර පාඩමේදී (Module 7), අපි දත්ත ගබඩා කිරීමට අවශ්ය Model එක සහ Migration එක සෑදුවා. දැන්, පරිශීලකයාට (user) ඔවුන්ගේ නම ඇතුළත් කිරීමට HTML Form එකක් සාදා, එම දත්ත භාරගෙන අපේ database එකේ `greetings` වගුවේ ගබඩා කරන ආකාරය ඉගෙන ගනිමු.
🤔 ක්රියාවලිය සිදුවන ආකාරය (The MVC Flow)
පරිශීලකයා form එක පුරවා submit කළ විට සිදුවන දේ පාලනය කිරීමට අපට ප්රධාන ගොනු (files) තුනක් අවශ්යයි. එම ගොනු project එකේ පවතින ස්ථාන පහත දැක්වේ.
මෙම ගොනු තුනේ කාර්යභාරය පහත පරිදි වේ:
- Route (මාර්ගය):
routes/web.php
පරිශීලකයා පිවිසෙන URL එකට අදාළව කුමක් කළ යුතුදැයි Laravel එකට කියයි. "Controller එකේ අහවල් function එක ක්රියාත්මක කරන්න" වැනි උපදෙස් දෙන්නේ මෙතනින්. - Controller (පාලකය):
app/Http/Controllers/GreetingController.php
Route එකෙන් එන ඉල්ලීම් (requests) භාරගෙන, අවශ්ය දේ කර (දත්ත database එකේ save කිරීම වැනි), පිළිතුරක් (response) සූදානම් කරයි. - View (පෙනුම):
resources/views/greeting.blade.php
පරිශීලකයා දකින HTML පිටුව. අපේ form එක අඩංගු වන්නේ මෙම ගොනුවේය.
පියවර 1: Controller එක සෑදීම
සියලුම ඉල්ලීම් කළමනාකරණය කිරීමට අපි `GreetingController` නමින් Controller එකක් හදමු. Terminal එකේ පහත command එක ක්රියාත්මක කරන්න.
මෙමගින් app/Http/Controllers/GreetingController.php හි අලුත් ගොනුවක් සෑදේ.
පියවර 2: Routes (මාර්ග) සැකසීම
දැන් routes/web.php ගොනුව විවෘත කර, අපට අවශ්ය මාර්ග දෙක සකස් කරමු: එකක් form එක පෙන්වීමට (GET), අනෙක form එකේ දත්ත භාරගැනීමට (POST).
web.php ගොනුවේ ඇති සියල්ල ඉවත් කර පහත කේතය ඇතුළත් කරන්න.
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\GreetingController; // Controller එක මෙතනට ගෙන්වා ගැනීම
// '/' URL එකට පිවිසි විට, GreetingController හි 'show' method එක ක්රියාත්මක කරන්න
Route::get('/', [GreetingController::class, 'show']);
// '/greet' URL එකට POST request එකක් ආවිට, 'store' method එක ක්රියාත්මක කරන්න
Route::post('/greet', [GreetingController::class, 'store']);
පියවර 3: View (HTML Form) එක සෑදීම
resources/views/ ෆෝල්ඩරය තුල greeting.blade.php නමින් අලුත් ගොනුවක් සාදා පහත කේතය ඇතුළත් කරන්න.
<!DOCTYPE html>
<html lang="si">
<head>
<meta charset="UTF-8">
<title>Greeting App</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-5">
<div class="row justify-content-center">
<div class="col-md-7">
<div class="card">
<div class="card-header">
<h4>සුබ පැතුම් යෙදුම (Greeting App)</h4>
</div>
<div class="card-body">
<!-- Form එකේ දත්ත /greet URL එකට POST method එකෙන් යවයි -->
<form action="/greet" method="POST">
@csrf <!-- Laravel Security Feature -->
<div class="mb-3">
<label for="name" class="form-label">ඔබේ නම ඇතුළත් කරන්න</label>
<input type="text" class="form-control" id="name" name="name" required>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
පියවර 4: Controller Logic එක ලිවීම
අවසාන වශයෙන්, අපි GreetingController.php ගොනුවට ගොස් Routes වලට අදාළව functions (`show` සහ `store`) ලියමු. මෙම ගොනුව සම්පූර්ණයෙන්ම පහත කේතය මගින් replace කරන්න.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Greeting; // අපේ Model එක import කරගැනීම
class GreetingController extends Controller
{
/**
* Form එක සහ database එකේ ඇති සියලු නම් පෙන්වයි.
*/
public function show()
{
return view('greeting'); // greeting.blade.php ගොනුව පෙන්වන්න
}
/**
* Form එකෙන් එන දත්ත භාරගෙන, database එකේ ගබඩා කරයි.
*/
public function store(Request $request)
{
// 1. එන දත්ත වලංගුදැයි බැලීම (Validation)
$request->validate([
'name' => 'required|string|max:255', // 'name' අනිවාර්යයි, අකුරු විය යුතුයි
]);
// 2. දත්ත database එකේ ගබඩා කිරීම
Greeting::create([
'name' => $request->name, // request එකේ එන 'name' එක ගබඩා කරන්න
]);
// 3. නැවත මුල් පිටුවටම යොමු කිරීම (Redirect)
return redirect('/');
}
}
🚀 ක්රියාත්මක කර බලමු!
දැන් Terminal එකේ php artisan serve command එක ක්රියාත්මක කර, browser එකේ http://127.0.0.1:8000 වෙත පිවිසෙන්න. ඔබට ඔබ සෑදූ form එක පෙනෙනු ඇත. නමක් ඇතුළත් කර Submit කරන්න. එය database එකට ඇතුළත් වී නැවත මුල් පිටුවටම පැමිණෙනු ඇත. ඔබට phpMyAdmin හරහා `greetings` වගුව පරීක්ෂා කළ හැක.