කෙටි නිබන්ධනය: 9 වන පාඩම - දත්ත සහ පණිවිඩ පෙන්වීම 📲

මෙම පාඩමේ ඉලක්කය වන්නේ, පරිශීලකයා **ඇතුළත් කළ සියලුම නම් නැවත පිටුවේම පෙන්වීම** සහ අලුතින් නමක් ඇතුළත් කළ පසු **සාර්ථක බවට පණිවිඩයක් පෙන්වීමයි**. මේ සඳහා අපි Controller එක සහ View එක යාවත්කාලීන කරමු.

පියවර 1: Controller එක යාවත්කාලීන කිරීම (දත්ත යැවීමට)

app/Http/Controllers/GreetingController.php ගොනුව විවෘත කර, database එකෙන් සියලුම දත්ත ලබාගෙන එය view එකට යැවීමට සහ දත්ත ඇතුළත් කළ පසු සාර්ථක පණිවිඩයක් එක් කිරීමට සකසමු.

ඔබගේ සම්පූර්ණ Controller ගොනුව ඉවත් කර, ඒ වෙනුවට පහත කේතය ඇතුළත් කරන්න.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Greeting; // Model එක import කරගැනීම

class GreetingController extends Controller
{
    /**
     * මෙම function එක දැන් database එකේ ඇති සියලු නම් ලබාගෙන view එකට යවයි.
     */
    public function show()
    {
        // Greeting model එක හරහා සියලු records ලබාගන්න (අලුත්ම එක උඩින් එන ලෙස).
        $allGreetings = Greeting::latest()->get(); 
        
        // 'greetings' යන නමින් එම දත්ත ටික view එකට යවන්න.
        return view('greeting', ['greetings' => $allGreetings]);
    }

    /**
     * මෙම function එක දැන් දත්ත ඇතුළත් කළ පසු සාර්ථක පණිවිඩයක් එක් කරයි.
     */
    public function store(Request $request)
    {
        $request->validate([
            'name' => 'required|string|max:255',
        ]);

        Greeting::create([
            'name' => $request->name,
        ]);
        
        // සාර්ථක පණිවිඩයක් සමඟ නැවත මුල් පිටුවටම යොමු කරන්න.
        return redirect('/')->with('success', 'ඔබගේ නම සාර්ථකව ඇතුළත් විය!');
    }
}

පියවර 2: View එක යාවත්කාලීන කිරීම (දත්ත පෙන්වීමට)

දැන් resources/views/greeting.blade.php ගොනුව විවෘත කර, Controller එකෙන් එවන සාර්ථක පණිවිඩය සහ නම් ලැයිස්තුව පෙන්වීමට සකසමු.

ඔබගේ සම්පූර්ණ View ගොනුව ඉවත් කර, ඒ වෙනුවට පහත කේතය ඇතුළත් කරන්න.

<!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>සුබ පැතුම් යෙදුම</h4>
                    </div>
                    <div class="card-body">
                        
                        {{-- සාර්ථක පණිවිඩය පෙන්වන කොටස --}}
                        @if (session('success'))
                            <div class="alert alert-success">
                                {{ session('success') }}
                            </div>
                        @endif

                        <form action="/greet" method="POST">
                            @csrf
                            <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>

                        <hr>

                        {{-- නම් ලැයිස්තුව පෙන්වන කොටස --}}
                        <h4 class="mt-4">ඇතුළත් කළ නම්</h4>
                        @if ($greetings->count() > 0)
                            <ul class="list-group">
                                @foreach ($greetings as $greeting)
                                    <li class="list-group-item">{{ $greeting->name }}</li>
                                @endforeach
                            </ul>
                        @else
                            <p>තවමත් කිසිදු නමක් ඇතුළත් කර නොමැත.</p>
                        @endif

                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

පියවර 3: යෙදුම ක්‍රියාත්මක කිරීම

Terminal එකේ php artisan serve command එක ක්‍රියාත්මක කර, ඔබගේ වෙබ් පිටුවට පිවිසෙන්න. දැන්, ඔබ නමක් ඇතුළත් කළ විට, ඔබට සාර්ථක පණිවිඩයක් පෙනෙනු ඇති අතර, එම නම පහළින් ඇති ලැයිස්තුවටද එක්වනු ඇත.

Model: app/Models/Greeting.php

Database එකේ `greetings` වගුව නියෝජනය කරන අතර, දත්ත ඇතුළත් කිරීමට අවසර ඇති තීරු (`fillable`) මෙහිදී නිර්වචනය කරයි.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Greeting extends Model
{
    use HasFactory;

    /**
     * Mass assignment සඳහා අවසර ඇති attributes.
     *
     * @var array<int, string>
     */
    protected $fillable = ['name'];
}

Route: routes/web.php

පරිශීලක ඉල්ලීම් අදාළ Controller function එකට යොමු කරන මාර්ග සිතියම.

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\GreetingController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
*/

// GET request එකක් '/' වෙත ආ විට 'show' function එකට යොමු කරයි.
Route::get('/', [GreetingController::class, 'show']);

// POST request එකක් '/greet' වෙත ආ විට 'store' function එකට යොමු කරයි.
Route::post('/greet', [GreetingController::class, 'store']);