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.
1️⃣ Laravel Routing Nedir?
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.
Basit Bir Route Tanımlama
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 Parametreleri Kullanımı
Route::get('/user/{id}', function ($id) {
return "Kullanıcı ID: " . $id;
});
Bu route, /user/{id}
şeklinde parametre alarak dinamik yönlendirme sağlar.
1️⃣ Temel GET Route
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ı';
});
- Örnek Kullanım:
https://localhost:8000/
→ “Ana Sayfa” metnini döndürür.https://localhost:8000/about
→ “Hakkımızda Sayfası” metnini döndürür.
2️⃣ Parametreli GET Route
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";
});
- Örnek Kullanım:
https://localhost:8000/user/5
→ “Kullanıcı ID: 5” metnini döndürür.
3️⃣ İsteğe Bağlı Parametreli Route
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!";
});
- Örnek Kullanım:
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.
4️⃣ POST Route
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ı!';
});
- Örnek Kullanım:
- Bir formdan
POST
isteği gönderildiğinde, bu route çalışır ve “Kullanıcı Kaydı Başarılı!” mesajını döndürür.
- Bir formdan
5️⃣ PUT/PATCH Route
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.";
});
- Örnek Kullanım:
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.
6️⃣ DELETE Route
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.";
});
- Örnek Kullanım:
DELETE https://localhost:8000/user/5
→ “ID: 5 kullanıcısı silindi.” metnini döndürür.
7️⃣ Resource Route (Kaynak Route)
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. |
8️⃣ Route Grupları
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';
});
});
- Örnek Kullanım:
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.
9️⃣ Middleware ile Route Kullanımı
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');
- Örnek Kullanım:
- Eğer kullanıcı giriş yapmışsa,
https://localhost:8000/profile
→ “Profil Sayfası” metnini döndürür. - Eğer kullanıcı giriş yapmamışsa, giriş sayfasına yönlendirilir.
- Eğer kullanıcı giriş yapmışsa,
🔟 API Route’ları
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']]);
});
- Örnek Kullanım:
https://localhost:8000/api/users
→ JSON formatında kullanıcı listesini döndürür.
2️⃣ Laravel Controller Kullanımı
Controller’lar, iş mantığını yöneten sınıflardır. Tüm controller’lar app/Http/Controllers
klasöründe bulunur.
Controller Oluşturma
Laravel’de yeni bir controller oluşturmak için şu komutu kullanabilirsiniz:
php artisan make:controller UserController
Controller İçerisinde Metot Tanımlama
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;
}
}
Route ile Controller Kullanımı
Ş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.
3️⃣ Resource Controller Kullanımı
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 sil
Sonuç
Bu 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 Eğitimi Konular
- Laravel Nedir ve Neden Kullanılmalı?
- Laravel Kurulumu (Composer ile Adım Adım Rehber)
- Laravel Proje Yapısı ve MVC Mimarisi
- Laravel Routing ve Controller Kullanımı
- Laravel Middleware Kullanımı
- API isteklerinde middleware kullanımı
- Laravel Migration ve Seeder Kullanımı
- Laravel Factory ve Faker ile Test Verisi Üretme
- Laravel’de API Kullanımı ve Token Bazlı Authentication
- Laravel Rol ve Yetkilendirme İşlemleri
- Laravel’de Cache ve Performans Optimizasyonu
- Laravel’de Queue (Kuyruk) Kullanımı ve Arka Plan İşlemleri
- Laravel Event & Listener Kullanımı
- Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi
- Laravel’de Test Driven Development (TDD) ve Test Yazımı