Web Doktoru - Laravel Routing ve Controller Kullanımı
Bu bölümde Laravel Routing ve Controller Kullanımını inceleyeceğiz. Laravel, web uygulamalarında URL’leri yönetmek için güçlü bir yönlendirme (routing) sistemine sahiptir.
Routing, bir URL’nin belirli bir işleve yönlendirilmesini sağlar. Laravel, yönlendirme işlemlerini routes/web.php
dosyasında tanımlar. Aşağıda Laravel ile kullanılabilecek neredeyse tüm Route’ ları bulabilirsiniz. Öncelikle hızlı bir giriş yapalım sonra diğer rota türlerini inceleyelim.
use Illuminate\Support\Facades\Route;
Route::get('/home', function () {
return "Merhaba, Laravel!";
});
Bu kod, /home
URL’sine gelen istekleri karşılar ve “Merhaba, Laravel!” mesajını döndürür.
Route::get('/user/{id}', function ($id) {
return "Kullanıcı ID: " . $id;
});
Bu route, /user/{id}
şeklinde parametre alarak dinamik yönlendirme sağlar.
GET route’ları, tarayıcıdan bir sayfaya erişim sağlamak için kullanılır. Örneğin, ana sayfayı veya bir blog gönderisini görüntülemek için GET route’ları kullanılır.
Route::get('/', function () {
return 'Ana Sayfa';
});
Route::get('/about', function () {
return 'Hakkımızda Sayfası';
});
https://localhost:8000/
→ “Ana Sayfa” metnini döndürür.https://localhost:8000/about
→ “Hakkımızda Sayfası” metnini döndürür.URL’den dinamik parametreler almak için parametreli route’lar kullanılır. Örneğin, bir kullanıcının profil sayfasını görüntülemek için kullanıcı ID’sini URL’den alabilirsiniz.
Route::get('/user/{id}', function ($id) {
return "Kullanıcı ID: $id";
});
https://localhost:8000/user/5
→ “Kullanıcı ID: 5” metnini döndürür.Bazı durumlarda parametreler isteğe bağlı olabilir. Bu tür route’lar için parametrelerin sonuna ?
eklenir ve varsayılan bir değer belirtilir.
Route::get('/user/{name?}', function ($name = 'Misafir') {
return "Hoş geldiniz, $name!";
});
https://localhost:8000/user
→ “Hoş geldiniz, Misafir!” metnini döndürür.https://localhost:8000/user/Ahmet
→ “Hoş geldiniz, Ahmet!” metnini döndürür.POST route’ları, form gönderimleri gibi veri gönderme işlemleri için kullanılır. Örneğin, bir kullanıcı kaydı oluşturmak için POST route’u kullanılabilir.
Route::post('/register', function () {
return 'Kullanıcı Kaydı Başarılı!';
});
POST
isteği gönderildiğinde, bu route çalışır ve “Kullanıcı Kaydı Başarılı!” mesajını döndürür.PUT ve PATCH route’ları, mevcut kaynakları güncellemek için kullanılır. PUT, kaynağın tamamını güncellerken, PATCH kısmi güncellemeler için kullanılır.
Route::put('/user/{id}', function ($id) {
return "ID: $id kullanıcısı güncellendi.";
});
Route::patch('/user/{id}', function ($id) {
return "ID: $id kullanıcısı kısmen güncellendi.";
});
PUT https://localhost:8000/user/5
→ “ID: 5 kullanıcısı güncellendi.” metnini döndürür.PATCH https://localhost:8000/user/5
→ “ID: 5 kullanıcısı kısmen güncellendi.” metnini döndürür.DELETE route’ları, bir kaynağı silmek için kullanılır. Örneğin, bir kullanıcıyı silmek için DELETE route’u kullanılabilir.
Route::delete('/user/{id}', function ($id) {
return "ID: $id kullanıcısı silindi.";
});
DELETE https://localhost:8000/user/5
→ “ID: 5 kullanıcısı silindi.” metnini döndürür.Resource route’ları, CRUD (Create, Read, Update, Delete) işlemleri için kullanılan tüm route’ları otomatik olarak oluşturur. Örneğin, bir blog gönderisi yönetimi için resource route’ları kullanılabilir.
Route::resource('posts', PostController::class);
Bu tek satırlık kod, aşağıdaki route’ları otomatik olarak oluşturur:
HTTP Metodu | URL | Controller Metodu | Açıklama |
---|---|---|---|
GET | /posts | index() | Tüm gönderileri listeler. |
GET | /posts/create | create() | Yeni gönderi oluşturma formu. |
POST | /posts | store() | Yeni gönderi kaydeder. |
GET | /posts/{post} | show() | Belirli bir gönderiyi gösterir. |
GET | /posts/{post}/edit | edit() | Gönderi düzenleme formu. |
PUT/PATCH | /posts/{post} | update() | Gönderiyi günceller. |
DELETE | /posts/{post} | destroy() | Gönderiyi siler. |
Route grupları, benzer özelliklere sahip route’ları gruplamak için kullanılır. Örneğin, tüm route’lar için bir önek veya middleware tanımlamak istediğinizde route grupları kullanılır.
Route::prefix('admin')->group(function () {
Route::get('/dashboard', function () {
return 'Admin Paneli';
});
Route::get('/users', function () {
return 'Kullanıcı Listesi';
});
});
https://localhost:8000/admin/dashboard
→ “Admin Paneli” metnini döndürür.https://localhost:8000/admin/users
→ “Kullanıcı Listesi” metnini döndürür.Middleware’ler, route’lara erişimden önce belirli işlemleri gerçekleştirmek için kullanılır. Örneğin, bir route’a sadece giriş yapmış kullanıcıların erişmesini sağlamak için auth
middleware’i kullanılabilir. Sonraki dersimizde middleware için ayrıntılara değineceğiz.
Route::get('/profile', function () {
return 'Profil Sayfası';
})->middleware('auth');
https://localhost:8000/profile
→ “Profil Sayfası” metnini döndürür.API route’ları, RESTful API’lar oluşturmak için kullanılır. Bu route’lar, api.php
dosyasında tanımlanır ve varsayılan olarak /api
öneki ile çalışır.
Route::get('/users', function () {
return response()->json(['users' => ['Ahmet', 'Mehmet', 'Ayşe']]);
});
https://localhost:8000/api/users
→ JSON formatında kullanıcı listesini döndürür.Controller’lar, iş mantığını yöneten sınıflardır. Tüm controller’lar app/Http/Controllers
klasöründe bulunur.
Laravel’de yeni bir controller oluşturmak için şu komutu kullanabilirsiniz:
php artisan make:controller UserController
Oluşturduğumuz controller içerisinde metodumuzu ekleyelim:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function show($id)
{
return "Kullanıcı ID: " . $id;
}
}
Şimdi oluşturduğumuz UserController
içindeki show
metodunu bir route ile bağlayalım:
use App\Http\Controllers\UserController;
Route::get('/user/{id}', [UserController::class, 'show']);
Bu kod, /user/{id}
URL’sine gelen isteği UserController
içindeki show
metoduna yönlendirir.
Laravel, CRUD işlemlerini daha düzenli hale getirmek için resource controller
kullanımı sunar.
Bir resource controller oluşturmak için şu komutu çalıştırabilirsiniz:
php artisan make:controller PostController --resource
Bu komut, Laravel’in standart CRUD metodlarını içeren bir controller oluşturur.
Daha sonra, aşağıdaki gibi resource route ekleyerek tüm CRUD işlemlerini tanımlayabilirsiniz:
Route::resource('posts', PostController::class);
Bu sayede aşağıdaki URL’ler otomatik olarak oluşturulur:
GET /posts
→ Tüm postları listeleGET /posts/{id}
→ Belirli bir postu gösterPOST /posts
→ Yeni post oluşturPUT/PATCH /posts/{id}
→ Postu güncelleDELETE /posts/{id}
→ Postu silBu bölümde Laravel’de Routing ve Controller kullanımını öğrendik. Bir sonraki adımda Laravel Middleware Kullanımı konusuna geçeceğiz.
Laravel’de Real-Time (Gerçek Zamanlı) Bildirimler Laravel, modern web uygulamalarında gerçek zamanlı bildirimler oluşturmak için güçlü…
Laravel’de Mail Gönderme ve Bildirimler Laravel, modern web uygulamaları geliştirirken e-posta gönderimi ve bildirim sistemleri…
Laravel, dosya yükleme ve depolama işlemleri için güçlü bir Storage (Dosya Depolama) mekanizması sunar. Bu mekanizma, yerel…
Laravel’de Çoklu Dil (Localization) Kullanımı: Uygulamanızı Küresel Hale Getirin 🌍 Laravel, modern web uygulamaları için…
Laravel’de Test Driven Development (TDD) ve Test Yazımı: Güvenilir ve Sürdürülebilir Kod Geliştirme Laravel, modern…
Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi Laravel, modern web uygulamalarında belirli…