අපේ application එකේ මූලිකම කොටස් දැන් සම්පූර්ණයි. මේ කොටසින් අපි එය තවත් වැඩි දියුණු කිරීමට අමතර features කිහිපයක් එකතු කරනවා. මෙය අත්යවශ්ය නැතත්, Laravel හි තවත් හැකියාවන් ඉගෙන ගැනීමට මෙය හොඳ අවස්ථාවක්.
Pizza වල පින්තූරයක් පෙන්වීමෙන් user experience එක තවත් හොඳ කරගන්න පුළුවන්. මේ සඳහා file uploads කරන හැටි අපි ඉගෙන ගමු.
`pizzas` table එකට image file එකේ නම save කරගන්න අලුත් column එකක් හදමු.
php artisan make:migration add_image_to_pizzas_table --table=pizzasසෑදුනු migration file එකේ `up()` function එකට ගොස් 'image' column එක එකතු කරන්න.
public function up()
{
Schema::table('pizzas', function (Blueprint $table) {
$table->string('image')->nullable()->after('price');
});
}දැන් `php artisan migrate` command එක run කරන්න.
Laravel හි public files access කිරීමට storage link එකක් සෑදිය යුතුයි.
php artisan storage:linkAdmin ට pizza එකතු කරන විට image එකක් upload කිරීමට form එකක් අවශ්යයි. (මෙය සම්පූර්ණ CRUD එකක් වන අතර, මෙහිදී සරලව image upload කරන `store` ක්රමය පමණක් දක්වා ඇත).
Pizza manage කිරීමට අලුත් controller එකක් හදන්න: `php artisan make:controller Admin/PizzaController`
Pizza එකතු කරන form එකේ (`create.blade.php`), `enctype="multipart/form-data"` ලෙස form tag එකට එකතු කර, file input එකක් යොදන්න.
<form action="..." method="POST" enctype="multipart/form-data">
...
<div class="mb-3">
<label for="image" class="form-label">Pizza Image</label>
<input type="file" name="image" class="form-control">
</div>
...
</form>`Admin/PizzaController` එකේ `store` function එකේ image එක save කරන logic එක ලියන්න.
public function store(Request $request)
{
// ... validation
$imagePath = null;
if ($request->hasFile('image')) {
$imagePath = $request->file('image')->store('pizzas', 'public');
}
Pizza::create([
'name' => $request->name,
'price' => $request->price,
'image' => $imagePath,
]);
// ... redirect
}`resources/views/order/create.blade.php` file එකේ pizza loop එක තුළ image එක පෙන්වන්න.
@foreach ($pizzas as $pizza)
<!-- Show Pizza Image -->
@if($pizza->image)
<img src="{{ asset('storage/' . $pizza->image) }}" alt="{{ $pizza->name }}" class="img-fluid" style="max-width: 150px;">
@endif
<!-- Option tag for the select dropdown -->
<option value="{{ $pizza->id }}">...</option>
@endforeach
User ට තම නම සහ password වෙනස් කරගැනීමට profile පිටුවක් හදමු.
Profile එකට අදාල Controller එක හදමු: `php artisan make:controller ProfileController`
`routes/web.php` file එකට මේ routes දෙක එකතු කරන්න.
use App\Http\Controllers\ProfileController;
Route::middleware(['auth'])->group(function () {
// ... other routes
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::post('/profile', [ProfileController::class, 'update'])->name('profile.update');
});`resources/views/` තුළ `profile` folder එකක් සාදා, `edit.blade.php` file එක හදන්න.
@extends('layouts.app')
@section('content')
<h2>Edit Profile</h2>
<form action="{{ route('profile.update') }}" method="POST">
@csrf
<!-- Name -->
<div class="mb-3">
<label>Name</label>
<input type="text" name="name" class="form-control" value="{{ auth()->user()->name }}">
</div>
<!-- New Password -->
<div class="mb-3">
<label>New Password (leave blank to keep current password)</label>
<input type="password" name="password" class="form-control">
</div>
<!-- Confirm Password -->
<div class="mb-3">
<label>Confirm New Password</label>
<input type="password" name="password_confirmation" class="form-control">
</div>
<button type="submit" class="btn btn-primary">Update Profile</button>
</form>
@endsection
`ProfileController.php` එකට ගොස් `edit` සහ `update` functions ලියන්න.
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
public function edit()
{
return view('profile.edit');
}
public function update(Request $request)
{
$user = auth()->user();
$request->validate([
'name' => 'required|string|max:255',
'password' => 'nullable|string|min:8|confirmed',
]);
$user->name = $request->name;
if ($request->password) {
$user->password = Hash::make($request->password);
}
$user->save();
return back()->with('success', 'Profile updated successfully!');
}
දැන් `/profile` URL එකට ගොස් ඔබේ තොරතුරු update කර බලන්න.
නියමයි! ඔබ දැන් file uploads සහ data updating වැනි සංකීර්ණ දේවල් පවා සාර්ථකව කළා. අපේ application එක දැන් ගොඩක් සම්පූර්ණයි. අවසාන වශයෙන්, අපි මේක live කරන හැටි බලමු.