Laravel Sinhala Tutorial

"The PHP Framework for Web Artisans" - අපි එකට එකතු වී සරල Point of Sale (POS) පද්ධතියක අත්තිවාරම දමමු.

Preview - POS System | Contact 0778543475

නිෂ්පාදන ලැයිස්තුව

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 හි MVC ගෘහ නිර්මාණ ශිල්පය

Laravel, Model-View-Controller (MVC) නම් ඉතා ජනප්‍රිය ගෘහ නිර්මාණ ශිල්පීය රටාව මත පදනම් වේ.

  • Model: යෙදුමේ දත්ත සහ ව්‍යාපාරික තර්කනය නිරූපණය කරයි. සරලවම, මෙය ඔබගේ දත්ත සමුදා වගුව (database table) සමඟ සෘජුවම ගනුදෙනු කරන කොටසයි.
  • View: පරිශීලකයා දකින අතුරුමුහුණතයි (User Interface). මෙය Model එකෙන් ලැබෙන දත්ත, පරිශීලකයාට පෙනෙන ආකාරයට සකස් කරයි (HTML කේතය).
  • Controller: මේ දෙක අතර සිටින "රථවාහන පාලකයායි". පරිශීලකයෙකුගෙන් ඉල්ලීමක් (request) පැමිණි විට, එය භාරගෙන, අවශ්‍ය දත්ත Model එකෙන් ලබාගෙන, එම දත්ත View එකට යවා, අවසන් ප්‍රතිචාරය (response) නැවත පරිශීලකයාට යවන්නේ Controller එක මගිනි.

මෙම නිබන්ධනයෙන්, අපි MVC රටාව ප්‍රායෝගිකව භාවිතා කරමින්, ඕනෑම වෙළඳසැලකට අවශ්‍ය වන සරල Point of Sale (POS) පද්ධතියක මූලිකම කොටස වන නිෂ්පාදන කළමනාකරණය (Product Management) ගොඩනගමු. මෙම පාඩම අවසානයේදී, ඔබට Laravel ව්‍යාපෘතියක් ආරම්භ කර, දත්ත සමුදායකට නිෂ්පාදන (products) ඇතුළත් කිරීමට සහ එම නිෂ්පාදන ලැයිස්තුවක් වෙබ් පිටුවක පෙන්වීමට හැකි වනු ඇත.

පූර්ව අවශ්‍යතා: මෙම පාඩම සඳහා PHP පිළිබඳ මූලික අවබෝධයක් සහ XAMPP/WAMP වැනි local server environment එකක් පිළිබඳව හුරුපුරුදු බවක් උපකාරී වේ.

1 වන කොටස: Laravel වැඩබිම සකසා ගැනීම (Setting Up the Environment) 🛠️

Laravel ව්‍යාපෘතියක් ආරම්භ කිරීමට, අපට ප්‍රධාන මෙවලම් කිහිපයක් අවශ්‍ය වේ.

  1. Local Server Environment: ඔබගේ පරිගණකයේ Apache, MySQL, සහ PHP ස්ථාපනය කරගැනීමට ඇති පහසුම ක්‍රමය වන්නේ XAMPP හෝ WAMP වැනි මෘදුකාංගයක් ස්ථාපනය කර ගැනීමයි.
  2. Composer: PHP සඳහා වන පැකේජ කළමනාකරු (dependency manager) මෙයයි. ඔබගේ ව්‍යාපෘතියට අවශ්‍ය සියලුම લાઇబ్రරි (libraries) බාගත කර කළමනාකරණය කරන්නේ Composer මගිනි. එය getcomposer.org වෙතින් බාගත කර ස්ථාපනය කරගන්න.

1.1 නව Laravel ව්‍යාපෘතියක් නිර්මාණය කිරීම

ඔබගේ පරිගණකයේ Command Prompt (Windows) හෝ Terminal (Mac/Linux) එක විවෘත කර, ඔබගේ XAMPP හි htdocs ෆෝල්ඩරය හෝ WAMP හි www ෆෝල්ඩරය වෙත පිවිසෙන්න. ඉන්පසු, Composer භාවිතා කර නව Laravel ව්‍යාපෘතියක් නිර්මාණය කිරීමට පහත විධානය ක්‍රියාත්මක කරන්න.

composer create-project laravel/laravel pos-system

මෙමගින් pos-system නමින් නව ෆෝල්ඩරයක්, Laravel ව්‍යාපෘතියට අවශ්‍ය සියලුම ගොනු සහ ෆෝල්ඩර සමඟ නිර්මාණය වනු ඇත.

1.2 Artisan සංවර්ධන සර්වරය

Laravel, Artisan නමින් ඉතා බලවත් command-line interface (CLI) එකක් සපයයි. අපගේ ව්‍යාපෘතිය සංවර්ධනය කරන අතරතුර එය පරීක්ෂා කිරීමට, Artisan මගින් වෙබ් සර්වරයක් පණ ගැන්විය හැක.

  1. පළමුව, ඔබ දැන් සෑදූ ව්‍යාපෘති ෆෝල්ඩරය වෙත terminal එකෙන් පිවිසෙන්න:
    cd pos-system
  2. ඉන්පසු, සර්වරය පණ ගැන්වීමට පහත විධානය ක්‍රියාත්මක කරන්න:
    php artisan serve

දැන් ඔබගේ වෙබ් බ්‍රව්සරය විවෘත කර, http://127.0.0.1:8000/ යන ලිපිනයට පිවිසෙන්න. ඔබට Laravel හි අලංකාර පිළිගැනීමේ පිටුව දිස්වන්නේ නම්, ඔබගේ ව්‍යාපෘතිය සාර්ථකව ආරම්භ වී ඇත!

2 වන කොටස: දත්ත සමුදාය සැකසීම සහ Migrations 🗃️

අපගේ POS පද්ධතියේ නිෂ්පාදන (Products) ගබඩා කිරීමට, අපට දත්ත සමුදායක් අවශ්‍ය වේ.

  1. දත්ත සමුදාය නිර්මාණය කිරීම: ඔබගේ XAMPP/WAMP control panel එකෙන් Apache සහ MySQL පණ ගන්වා, phpMyAdmin වෙත පිවිසෙන්න. එහිදී, pos_system නමින් නව දත්ත සමුදායක් (database) නිර්මාණය කරන්න.
  2. .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 එකක් නොමැත).
  3. Model සහ Migration නිර්මාණය කිරීම: දත්ත සමුදායේ ව්‍යුහය (schema) කේතය මගින් පාලනය කිරීමට Laravel, Migrations භාවිතා කරයි. අපි Product model එක සහ ඊට අදාළ migration ගොනුව එකවර සෑදීමට Artisan භාවිතා කරමු.
    php artisan make:model Product -m
  4. Migration ගොනුව සංස්කරණය කිරීම: 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
    };
    
  5. Migration එක ක්‍රියාත්මක කිරීම: දැන්, මෙම සැලැස්මට අනුව දත්ත සමුදායේ නියම වගුව නිර්මාණය කිරීමට පහත විධානය ක්‍රියාත්මක කරන්න.
    php artisan migrate
    දැන් ඔබ phpMyAdmin වෙත ගොස් බැලුවහොත්, products නමින් නව වගුවක් නිර්මාණය වී ඇති ආකාරය දැකගත හැක.

3 වන කොටස: MVC ක්‍රියාත්මකයි - නිෂ්පාදන ලැයිස්තුගත කිරීම M-V-C

දැන් අපි MVC රටාව අනුගමනය කරමින්, අපගේ දත්ත සමුදායේ ඇති නිෂ්පාදන, වෙබ් පිටුවක පෙන්වමු.

  1. Controller නිර්මාණය කිරීම: නිෂ්පාදන සම්බන්ධ සියලුම ඉල්ලීම් (requests) හැසිරවීමට Controller එකක් නිර්මාණය කරමු.
    php artisan make:controller ProductController
  2. Route (මාර්ගය) නිර්වචනය කිරීම: පරිශීලකයෙක් /products යන URL එකට පිවිසෙන විට, අප දැන් සෑදූ ProductController එකේ index නම් method එකක් ක්‍රියාත්මක විය යුතු බවට Laravel ට දන්වමු. routes/web.php ගොනුව විවෘත කර පහත කේතය එක් කරන්න.
    use App\Http\Controllers\ProductController;
    
    Route::get('/products', [ProductController::class, 'index'])->name('products.index');
    
  3. Controller Logic එක ලිවීම: 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]);
        }
    }
    
  4. View (Blade Template) එක නිර්මාණය කිරීම: Controller එකෙන් එවන $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 එකක් මගින් දත්ත සමුදායට ඇතුළත් කිරීමට උත්සාහ කරන්න.