27 Jun 2018
Laravel URL işlemleri
  • 410 Okuma
  • 0 Yorum
  • 1 Beğeni

Laravel URL işlemleri

URL üretimi ve üretilen URL bilgilerine erişime geliştirdiğiniz web uygulamasında ihtiyaç duyabilirsiniz. Bu makalemde Laravel ile URL üretme, imzalı URL üretimi, mevcut URL bilgilerine erişim ve URL ile yönlendirme işlemlerinin nasıl yapılacağından bahsedeceğim.


Laravel ile URL üretmek için "url" fonksiyonu kullanılmaktadır. Örnek bir URL üretme işlemi,


$post = App\Post::find(1);

echo url("/posts/{$post->id}");

// http://www.webdeyaz.com/posts/1


"url" fonskiyonu ile mevcut URL bilgilerine erişim sağlanabilmektedir. Örnek kullanım,


// Mevcut URL bilgisine erişim için
echo url()->current();

// Mevcut URL bilgisine parametleri ile beraber erişim için
echo url()->full();

// Bir önceki URL bilgisine erişim için
echo url()->previous();


Ayrıca bu fonskiyonlar "URL" facade ile kullanılabilir. Örnek kullanım,


use Illuminate\Support\Facades\URL;

echo URL::current();


Laravel ile yönlendirme işlemlerini anlatırken isimlendirme işleminden bahsetmiştik. İsim verilen yönlendirmeler kullanılarak da yönlendirme işlemi yapılabilir. Örnek kullanım,


Route::get('/post/{id}', function () {
    //
})->name('post.show');


Yukarıda tanımladığımız ve adı "post.show" olan "route" erişimi için örnek kullanım,


echo route('post.show', ['post' => 1]);

// http://webdeyaz.com/post/1



İmzalı URL Üretimi


Laravel imzalı (signed) URL üretimi ve kontrolü için bir çözüm sunmaktadır. Bu şekilde üretilen bir URL 'in değişip değişmediğinin kontrolü kolayca yapılabilir. Bu özelliği, abonelerinizin eposta dağıtım grubundan çıkma isteği ya da gelen eposta linki üzerinden doğrudan oturum açma gibi durumlarda kullanabilirsiniz.


Örnek kullanım, Üyelerin aboneliklerinin iptali için URL üretimi,


use Illuminate\Support\Facades\URL;

return URL::signedRoute('unsubscribe', ['user' => 1]);


İsterseniz bu URL için berlirli bir geçerlilik süresi tanımlayabilirsiniz,


use Illuminate\Support\Facades\URL;

return URL::temporarySignedRoute(
    'unsubscribe', now()->addMinutes(30), ['user' => 1]
);


Üretilen imzalı URL'in geçerli olup olmadığının kontrolü,


use Illuminate\Http\Request;

Route::get('/unsubscribe/{user}', function (Request $request) {
    if (! $request->hasValidSignature()) {
        abort(401);
    }

    // ...
})->name('unsubscribe');


Kontrol işlemini "middleware" kullanarak da yapabilirsiniz, bunun için "app/http/Kernel.php" dosyasında middleware tanımlaması yapıyoruz.


/**
 * The application's route middleware.
 *
 * These middleware may be assigned to groups or used individually.
 *
 * @var array
 */
protected $routeMiddleware = [
    'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
];


Middleware tanımlamasından sonra route ile örnek kullanım,


Route::post('/unsubscribe/{user}', function (Request $request) {
    // ...
})->name('unsubscribe')->middleware('signed');


Controller İşlemleri için URL Üretimi


Laravel de "action" fonksiyonu verilen Controller için URL üretme işleminde kullanılmaktadır. Örnek kullanım,


$url = action('HomeController@index');


Eğer controller parametre alıyorsa, bunu da belirtmeniz mümkün,


$url = action('UserController@profile', ['id' => 1]);


Varsayılan Değer (Default Value)


URL için varsayılan değer kullanımı bir örnek üzerinden anlatalım. Uygulamanız çok dilli olabilir ve bu durumda birçok URL için dil seçeğinin ne olduğunu belirtmeniz gerebilir.


Route::get('/{locale}/posts', function () {
    //
})->name('post.index');


Böyle durumlarda, her route ve URL için "locale" değerini parametre ile belirtmek yerine "URL::defaults" fonksiyonu ile bu değeri tanımlayabilirsiniz.

Bunun için aşağıdaki şekilde bir middleware tanımlıyoruz.




namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\URL;

class SetDefaultLocaleForUrls
{
    public function handle($request, Closure $next)
    {
        URL::defaults(['locale' => $request->user()->locale]);

        return $next($request);
    }
}


Bu middleware sayesinde kullanının "locale" değerini URL 'de bulunan "locale" değerine atamış olduk. Bu şekilde her URL'in başında "locale" değerine belirtmemize gerek kalmadı.


Sonuç


URL üretimi ve yönlendirme işlemi birçok web uygulamasında kullanılmaktadır. Bu makalemde Laravel ile bu işlemlerin nasıl yapıdığından bahsettim. Ayrıca, imzalı URL üretimden bahsettim ki, bu işlemi eposta grubuna abone olma ve abonelikten çıkma gibi işlemlerinizde kolayca kullanabilirsiniz.


Karşılaştığınız sorunları bana mesaj yoluyla sorabilirsiniz.
Umarım faydalı olur. İyi çalışmalar.


Makaleyi faydalı buldunuz mu ?

Yazar


Legend Engineer

Legend Engineer

Mühendis (Bilgisayar)

Bilgisayar Mühendisliği mezunuyum. Bilgisayar alanında edindiğim bilgileri bu blog üzerinde paylaşıyorum. Beni takipte kalın.

Yorumlar


İlk yorum yapan sen ol

İlginizi Çekebilir

Makale Hakkındaki Düşünçelerinizi Paylaşın