"The PHP Framework for Web Artisans" - අපි එකට එකතු වී සරල Point of Sale (POS) පද්ධතියක අත්තිවාරම දමමු.
| ID | නම | මිල (රු.) | ප්රමාණය | ක්රියා |
|---|---|---|---|---|
| 1 | Milk Bread | 150.00 | 50 | |
| 2 | Chocolate Cake (1kg) | 2500.00 | 12 | |
| 3 | Fish Bun | 80.00 | 120 |
ඔබ PHP ක්රමලේඛන භාෂාව පිළිබඳව මූලික දැනුමක් ලබාගෙන, සරල වෙබ් පිටු නිර්මාණයෙන් ඔබ්බට ගොස්, බලවත්, දත්ත-පදනම් වූ වෙබ් යෙදුම් (Web Applications) නිර්මාණය කිරීමට බලාපොරොත්තු වන්නේ නම්, Laravel යනු ඔබ සඳහාම ඇති හොඳම මෙවලමයි. Laravel යනු ලොව පුරා PHP සංවර්ධකයින් අතර වඩාත්ම ජනප්රිය, අලංකාර වාක්ය වින්යාසයක් (elegant syntax) සහිත, නොමිලේ සහ විවෘත මූලාශ්ර (open-source) වෙබ් රාමුවකි (Web Framework).
Django පාඩමේදී මෙන්, වෙබ් රාමුවක් යනු වෙහෙසකර, පුනරාවර්තන කාර්යයන් (දත්ත සමුදා සම්බන්ධතා, ආරක්ෂාව, URL මාර්ගගත කිරීම) අප වෙනුවෙන් සිදු කර, අපගේ යෙදුමේ සුවිශේෂී තර්කනය (business logic) පිළිබඳව පමණක් අවධානය යොමු කිරීමට ඉඩ සලසන පෙර-නිර්මිත ව්යුහයකි.
Laravel, Model-View-Controller (MVC) නම් ඉතා ජනප්රිය ගෘහ නිර්මාණ ශිල්පීය රටාව මත පදනම් වේ.
මෙම නිබන්ධනයෙන්, අපි MVC රටාව ප්රායෝගිකව භාවිතා කරමින්, ඕනෑම වෙළඳසැලකට අවශ්ය වන සරල Point of Sale (POS) පද්ධතියක මූලිකම කොටස වන නිෂ්පාදන කළමනාකරණය (Product Management) ගොඩනගමු. මෙම පාඩම අවසානයේදී, ඔබට Laravel ව්යාපෘතියක් ආරම්භ කර, දත්ත සමුදායකට නිෂ්පාදන (products) ඇතුළත් කිරීමට සහ එම නිෂ්පාදන ලැයිස්තුවක් වෙබ් පිටුවක පෙන්වීමට හැකි වනු ඇත.
පූර්ව අවශ්යතා: මෙම පාඩම සඳහා PHP පිළිබඳ මූලික අවබෝධයක් සහ XAMPP/WAMP වැනි local server environment එකක් පිළිබඳව හුරුපුරුදු බවක් උපකාරී වේ.
Laravel ව්යාපෘතියක් ආරම්භ කිරීමට, අපට ප්රධාන මෙවලම් කිහිපයක් අවශ්ය වේ.
ඔබගේ පරිගණකයේ Command Prompt (Windows) හෝ Terminal (Mac/Linux) එක විවෘත කර, ඔබගේ XAMPP හි htdocs ෆෝල්ඩරය හෝ WAMP හි www ෆෝල්ඩරය වෙත පිවිසෙන්න. ඉන්පසු, Composer භාවිතා කර නව Laravel ව්යාපෘතියක් නිර්මාණය කිරීමට පහත විධානය ක්රියාත්මක කරන්න.
composer create-project laravel/laravel pos-system
මෙමගින් pos-system නමින් නව ෆෝල්ඩරයක්, Laravel ව්යාපෘතියට අවශ්ය සියලුම ගොනු සහ ෆෝල්ඩර සමඟ නිර්මාණය වනු ඇත.
Laravel, Artisan නමින් ඉතා බලවත් command-line interface (CLI) එකක් සපයයි. අපගේ ව්යාපෘතිය සංවර්ධනය කරන අතරතුර එය පරීක්ෂා කිරීමට, Artisan මගින් වෙබ් සර්වරයක් පණ ගැන්විය හැක.
cd pos-system
php artisan serve
දැන් ඔබගේ වෙබ් බ්රව්සරය විවෘත කර, http://127.0.0.1:8000/ යන ලිපිනයට පිවිසෙන්න. ඔබට Laravel හි අලංකාර පිළිගැනීමේ පිටුව දිස්වන්නේ නම්, ඔබගේ ව්යාපෘතිය සාර්ථකව ආරම්භ වී ඇත!
අපගේ POS පද්ධතියේ නිෂ්පාදන (Products) ගබඩා කිරීමට, අපට දත්ත සමුදායක් අවශ්ය වේ.
phpMyAdmin වෙත පිවිසෙන්න. එහිදී, pos_system නමින් නව දත්ත සමුදායක් (database) නිර්මාණය කරන්න..env ගොනුව සැකසීම: ඔබගේ Laravel ව්යාපෘතියේ මූල ෆෝල්ඩරයේ ඇති .env ගොනුව VS Code එකෙන් විවෘත කරන්න. එහි ඇති දත්ත සමුදා සම්බන්ධතා තොරතුරු, ඔබ දැන් සෑදූ දත්ත සමුදායට ගැලපෙන පරිදි වෙනස් කරන්න.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=pos_system
DB_USERNAME=root
DB_PASSWORD=
(XAMPP හි සාමාන්යයෙන් username එක root වන අතර, password එකක් නොමැත).
Product model එක සහ ඊට අදාළ migration ගොනුව එකවර සෑදීමට Artisan භාවිතා කරමු.
php artisan make:model Product -m
database/migrations/ ෆෝල්ඩරයේ අලුතින් සෑදුණු migration ගොනුව විවෘත කරන්න. එහි up method එක තුළ, අපගේ products වගුවට අවශ්ය තීරු (columns) නිර්වචනය කරමු.
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('products', function (Blueprint $table) {
$table->id(); // Auto-incrementing Primary Key
$table->string('name');
$table->decimal('price', 8, 2); // 8 total digits, 2 decimal places
$table->integer('quantity')->default(0);
$table->timestamps(); // created_at and updated_at columns
});
}
// ... down method
};
php artisan migrate
දැන් ඔබ phpMyAdmin වෙත ගොස් බැලුවහොත්, products නමින් නව වගුවක් නිර්මාණය වී ඇති ආකාරය දැකගත හැක.
දැන් අපි MVC රටාව අනුගමනය කරමින්, අපගේ දත්ත සමුදායේ ඇති නිෂ්පාදන, වෙබ් පිටුවක පෙන්වමු.
php artisan make:controller ProductController
/products යන URL එකට පිවිසෙන විට, අප දැන් සෑදූ ProductController එකේ index නම් method එකක් ක්රියාත්මක විය යුතු බවට Laravel ට දන්වමු. routes/web.php ගොනුව විවෘත කර පහත කේතය එක් කරන්න.
use App\Http\Controllers\ProductController;
Route::get('/products', [ProductController::class, 'index'])->name('products.index');
app/Http/Controllers/ProductController.php ගොනුව විවෘත කර, index method එක නිර්මාණය කරමු.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Product; // අපගේ Product model එක import කරන්න
class ProductController extends Controller
{
public function index()
{
$products = Product::all(); // Eloquent ORM මගින් සියලුම products ලබා ගැනීම
return view('products.index', ['products' => $products]);
}
}
$products දත්ත පෙන්වීමට View එකක් නිර්මාණය කරමු.
resources/views/ ෆෝල්ඩරය තුළ products නමින් නව ෆෝල්ඩරයක් සාදන්න.products ෆෝල්ඩරය තුළ index.blade.php නමින් නව ගොනුවක් සාදා, පහත කේතය යොදන්න.<!DOCTYPE html>
<html lang="si">
<head>
<meta charset="UTF-8">
<title>නිෂ්පාදන ලැයිස්තුව</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">
<h1 class="mb-4">ගබඩාවේ ඇති නිෂ්පාදන</h1>
<table class="table table-bordered table-striped">
<thead class="table-dark">
<tr>
<th>ID</th>
<th>නම</th>
<th>මිල (රු.)</th>
<th>ප්රමාණය</th>
</tr>
</thead>
<tbody>
@forelse ($products as $product)
<tr>
<td>{{ $product->id }}</td>
<td>{{ $product->name }}</td>
<td>{{ number_format($product->price, 2) }}</td>
<td>{{ $product->quantity }}</td>
</tr>
@empty
<tr>
<td colspan="4" class="text-center">No products found.</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</body>
</html>
දැන් සර්වරය ක්රියාත්මකව තිබියදී (php artisan serve), http://127.0.0.1:8000/products වෙත පිවිසෙන්න. ඔබට "No products found" ලෙස පණිවිඩයක් සහිත හිස් වගුවක් පෙනෙනු ඇත.
සුබ පැතුම්! ඔබ Laravel හි MVC ගෘහ නිර්මාණ ශිල්පය අනුගමනය කරමින්, දත්ත සමුදායකින් දත්ත ලබාගෙන, ඒවා වෙබ් පිටුවක පෙන්වන සම්පූර්ණ ක්රියාවලිය සාර්ථකව නිම කළා. මෙය ඕනෑම දත්ත-පදනම් වූ වෙබ් යෙදුමක අත්තිවාරමයි.
ඔබට කළ හැකි මීළඟ පියවර: මෙම යෙදුම තවදුරටත් දියුණු කරන්න. නව නිෂ්පාදන ඇතුළත් කිරීමට HTML form එකක් සහිත create page එකක් නිර්මාණය කරන්න. එම form එකෙන් ලැබෙන දත්ත, Controller එකේ store method එකක් මගින් දත්ත සමුදායට ඇතුළත් කිරීමට උත්සාහ කරන්න.