Merhaba arkadalar bu kategoride sizlere laravel 8 sürümü ile destek vereceğim. Laravel 8 ile route yönlendirmelerinde güncelleme oldu.
Eski sürümlere göre yaptığınız Route::get() yönlendirmelerini laravel 8 de denediğinizde hata sayfasıyla karşılacaksınızdır. Bu yazıda sizlere
laravel 8’in route yönlendirmeleri hakkında bilgi paylaşımı yapacağım. Öncelikle bildiğiniz gibi laravel route yönlendirmeleri projeniz/routes|web.php
dizininde yapılmaktadır. İlk olarak olağan bir yönlendirme yapalım.
1 2 | Route::get('/',function(){ return "Merhaba Laravel 8";}); //ilk ana dizine gelindiğinde ekrana "Merhaba Laravel 8" yazacak. |
Laravel 8 ile gelen yeni route yönlendirmesine bir örnek yapalım. Öncelikl MerhabaController adında bir tane Controller oluşturalım.
1 | php artisan make:controller MerhabaController |
Daha sonra MerhabaController’ımızı açalım ve içerisine aşağıdaki selam fonksiyonunu oluşturalım.
1 2 3 | public function selam(){ return "Merhaba Laravel 8"; } |
routes/web.php
dosyamızı açalım ve bu sayfaya use App\Http\Controllers\MerhabaController;
MerhabaController’ımızı çağıralım.
Ardından sayfa yönlendirmemizi yapalım.
1 2 | use App\Http\Controllers\MerhabaController; Route::get('/selam',[MerhabaController::class,'selam']); |
Windows için cmd çalıştıralım, projemizin olduğu dizine gidelim ve terminale aşağıdaki komudu yazalım.
1 | php artisan serve |
Tarayıcımızın adres çubuğuna http://localhost:8000/selam
yazalım. Ekranda “Merhaba Laravel 8” metnini görüyorsanıp problem yok.
Hem get ile gönderdiğinizde hemde post ile gönderdiğinizde aynı controller metodu çalıştıracaksanız Route::match
metodunu kullanabilirsinzi. Örneğin:
use App\Http\Controllers\MerhabaController; Route::match([‘get’,’post’],’/selam’,[MerhabaController::class,’selam’]);
İsterseniz Route::get,Route::post,Route::put,Route::delete,Route::patch,Route::options
yönlendirmelerinde ise Route::any
kullanabilirsiniz.
1 2 | use App\Http\Controllers\MerhabaController; Route::any('/selam',[MerhabaController::class,'selam']); |
Post gönderimlerinizde ise projeniz/routes/web.php
sayfasına use Illuminate\Http\Request;
klasını dahil ederek post iseteklerinide alabilirsiniz.
Örnek bir get ve post işlemini yaptığımız bir sayfa yapalım öncelikle Route yapımızı routes/web.php
aşağıdaki gibi düzenleyelim.
1 2 3 | //bunları ekliyoruz. use App\Http\Controllers\MerhabaController; Route::match(['get','post'],'/selam',[MerhabaController::class,'selam']); |
Daha sonra projeniz/App/Http/Controllers/MerhabaController.php
dosyamıza aşağıdaki metodu ekleyelim
1 2 3 | public function selam(Request $gelenPost){ return view('selamla',['postVeri'=>$gelenPost]); } |
Son olarak bir tane projeniz/resources/views/
dizinine selamla.blade.php
dosyamızı oluşturlave içerisini aşağıdaki gibi düzenleyelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Selamla</title> </head> <body> <?php if(isset($postVeri->email)){ printf("Mail : %s<br />Şifre : %s",$postVeri->email,$postVeri->sifre); } ?> <form action="/selam" method="POST"> @csrf <input type="email" name="email" placeholder="e-Posta" /><br /> <input type="password" name="sifre" placeholder="Şifre" /><br /> <button type="submit">Gönder</button> </form> </body> </html> |
Tarayıcımızın adresine http://localhost:8000/selam
yazalım ve post edelim gelen verileri ekranda görüyorsanız problem yok.
Laravel 8 Redirect Kullanımı
Laravel 8 de Redirect metodu sayfa yönlendirmeleri için kullanılır örneğin /,/index,/anasayfa,/home
şeklindeki sayfaları /selam
'a yönlendirelim.
projeniz/routes/web.php
'yi aşağıdaki gibi düzenleyelim
1 2 3 | use App\Http\Controllers\MerhabaController; Route::redirect('/','/selam'); //anadizini /selam olarak yönlendirecek. Route::match(['get','post'],'/selam',[MerhabaController::class,'selam']); |
Laravel 8 View Routes Yönledirmesi
Eğer bir controller kullanmadan bir sayfa (x.blade.php) görütülemek istiyorsanı web.php
'yi aşağıdaki gibi düzenleyebilirsiniz
Daha önce oluşturduğumuz selamla.blade.php sayfasına direk yönlendirme yapalım.
1 2 | use App\Http\Controllers\MerhabaController; Route::view('/','selamla'); |
Eğer yönlendirem yaparken bir veride göndermek istiyorsanız web.php'yi aşağıdaki gibi düzenleyin.
1 2 | use App\Http\Controllers\MerhabaController; Route::view('/','selamla',['gidenVeri'=>"Merhaba Laravel 8"]); |
selamla.blade.php'ye $gidenVeri="Merhaba Laravel 8";
gönderildi. selamla.blade.php de ise aşağıdaki gibi karşılayabilirsiniz.
1 2 | //selamla.blade.php {{ $gidenVeri }} |
Laravel 8 Route Parametre Gönderimi
routes/web.php
yönlendirme yaparken parametre gönderdimleride aşağıdaki gibi olmaktadır.
1 2 3 | //routes/web.php use App\Http\Controllers\MerhabaController; Route::get('/kullanici/{id}',[MerhabaController::class,'setParam']); |
Gelen parametreleri ise controller sayfamızda aşağıdaki gibi alıyoruz
1 2 3 4 5 | //MerhabaController public function setParam($userId){ return "Gelen Parametre : ".$userId; } |
Bu sefer birden çok parametre gönderelim.
1 2 3 | //routes/web.php use App\Http\Controllers\MerhabaController; Route::get('/kullanici/{id}/name/{name}',[MerhabaController::class,'setParam']); |
MerhabaController'ımızda parametrelerimizi alalım.
1 2 3 4 5 | //App/Http/Controllers/MerhabaController public function setParam($userId,$name){ return "Gelen Parametre id : ".$userId."<br />Gelen parametre name : ".$name; } |
Her zaman sayfamıza parametre gelmeyebilir bunun için varsayılanlar oluşturmamız gerekir
1 2 3 | //routes/web.php use App\Http\Controllers\MerhabaController; Route::get('/kullanici/{id?}',[MerhabaController::class,'setParam']); |
Controllerimızıda düzenleyelim.
1 2 3 4 | //MerhabaControler.php public function setParam($userId="id gönderilmedi."){ return "Gelen Parametre id : ".$userId; } |
Laravel 8 Parametre Kısıtlamaları
İsterseniz gelen parametere kısıtlamalar getirerek bir ön elemeden geçirip daha sağlıklı parametrelerin gelmesiniz sağlaya biliriz.
1 2 3 4 | //routes/web.php use App\Http\Controllers\MerhabaController; Route::get('/kullanici/{adi?}',[MerhabaController::class,'setParam'])->where('adi','[A-Za-z]+'); //A'dan Z'ye büyük ve küçük harfler birden fazla girilecek şekilde çalışır. |
1 2 3 4 | //MerhabaController public function setParam($userAdi){ return "Gelen Parametre adı : ".$userAdi; } |
Diğer örnek filitrelemeleri aşağıda görebilirsiniz.
1 2 3 4 5 6 7 8 | use App\Http\Controllers\MerhabaController; Route::get('/kullanici/{adi}',[MerhabaController::class,'setParam'])->where('adi','[A-Za-z]+'); //A'dan Z'ye büyük küçük birden fazla harf. Route::get('/kullanici/{id}',[MerhabaController::class,'setParam'])->where('adi','[0-9]+'); //0'dan 9'a birden fazla sayı. Route::get('/kullanici/{adi}/{id}',[MerhabaController::class,'setParam'])->where(['id'=>'[0-9]+','adi'=>'[A-Za-z]+']); //Birden çok parametre kullanımında Route::get('/kullanici/{adi}/{id}',[MerhabaController::class,'setParam'])->whereAlpha('adi')->whereNumber('id'); //Daha kolay kullanımı Route::get('/kullanici/{key}',[MerhabaController::class,'setParam'])->whereAlphaNumber('key'); //hem numeric hem karakterleri kapsıyor. Route::get('/kullanici/{id}',[MerhabaController::class,'setParam'])->whereUuid('id'); Route::get('/kullanici/{data}',[MerhabaController::class,'setParam'])->where('.*'); //bütün karakterlere izin veriyoruz. |
Laravel 8 Url İsimlendirme
Laravel 8'de yönlendirmeleriniz isimlendirerek daha kısa ve pratik yönlendirmeler yapabilirsiniz.
1 2 3 4 5 6 | //routes/web.php use App\Http\Controllers\MerhabaController; Route::get('/admin/kullanici/profil',[MerhabaController::class,'profil'])->name('profil'); Route::get('/url',function(){ return route('profil'); }); // ekran çıktısı : http://localhost:8000/admin/kullanici/profil |
İsimlendireceğiniz url'ler parametreli olduğunda ise aşağdaki gibi kullanılır.
1 2 3 4 5 | //routes/web.php use App\Http\Controllers\MerhabaController; Route::get('/admin/kullanici/{id}',[MerhabaController::class,'profil'])->name('profil'); Route::get('/url',function(){ return route('profil',['id'=>2017]); }); //ekran çıktısı: http://localhost:8000/admin/kullanici/2017 |
Laravel 8 Önek Kullanımı
Belirli yönlendirmleri gruplayarak sürekli önekleri yazmak zorunda kalmaz ve yönlendirmelerinizde bir group halinde kalmış olur. Mesala admin panel yönlendirmleri aşağıdaki gibi gruplanabilir.
1 2 3 4 5 6 7 8 9 | //routes/web.php Route::prefix('/admin/supersu/')->group(function(){ Route::get('/sliderEkle',function(){ return "/admin/supersu/sliderEkle"; }); Route::get('/sliderGuncelle',function(){ return "/admin/supersu/sliderGuncelle"; }); }); |
Laravel 8 Önekli Route Adlandırma
Gruplamış olduğunuz yönlendirleri aşağıdaki gibi adlandırabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | use App\Http\Controllers\MerhabaController; Route::prefix('/admin/supersu/')->group(function(){ Route::get('/sliderEkle',function(){ return "/admin/supersu/sliderEkle"; })->name('sInsert'); Route::get('/sliderGuncelle',function(){ return "/admin/supersu/sliderGuncelle"; })->name('sUpdate'); Route::get('/url',function(){ $x=route('sInsert'); $y=route('sUpdate'); return "ekle url : ". $x."<br/>Güncelle url : ".$y; }); }); /** * Url:http://localhost:8000/admin/supersu/url * Ekran Çıktısı: * ekle url : http://localhost:8000/admin/supersu/sliderEkle * Güncelle url : http://localhost:8000/admin/supersu/sliderGuncelle */ |
Daha detaylı bilgi için Laravel sayfasını ziyaret edebilirsiniz.