Laravel 5 Framework Basit Kontroller

Merhaba arkadaşlar bu yazımda sizlerle laravel üzerinde basit kontrolleri göreceğiz. Rotalarda yöntemleri belirlemek yerine her işlem grubu için bir kontroller oluşturarak toplu olarak işlemleri yazabiliriz. Kontroller dosyaları app/Http/Controller klasörü altında bulunmaktadır.

Basit bir kontroller yapısı:

<?php

namespace App\Http\Controllers;

use App\User;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * Show the profile for the given user.
     *
     * @param  int  $id
     * @return View
     */
    public function show($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }
}

Kontroller dediğimiz basit bir sınıftan ibarettir. Bazı özellikleri kazanması için laravel’in Controller sınıfı ile genişletmemiz gerekiyor. Bu işlem mecburi değildir ancak middleware, validate ve dispath gibi yardımcı özellikler için yapmamız gerekiyor. Kontroller içerisinde bulunan bir methodu rota üzerinde çalıştırmak isterseniz bunun için closure ( fonksiyon ) olarak girmiş olduğumuz parametreye kontrollerin adı ve içerisindeki methodun adını giriyoruz. Hemen örnek olarak kodu verelim.

<?php

Route::get('/', 'UserController@show');

Artisan ile kontroller oluşturma

Komut istemi ile proje klasörü içerisinde aşağıdaki komutu çalıştırırsanız bir kontroller oluşturabilirsiniz.

php artisan make:controller KontrollerinAdi

KontrollerinAdi isminde bir kontroller oluşturmuş olduk. Bu kontrolleri app/Http/Controller içerisinde bulabilirsiniz.

Tek aksiyonlu kontroller

Eğer kontroller içinde tek bir aksiyondan olacaksa bunun için __invoke methodunu kullanacağız.

<?php

namespace App\Http\Controllers;

use App\User;
use App\Http\Controllers\Controller;

class ShowProfile extends Controller
{
    /**
     * Show the profile for the given user.
     *
     * @param  int  $id
     * @return View
     */
    public function __invoke($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }
}

Rotalarda bunu nasıl tanımlayacağız diyebilirsiniz. Bu kontrolleri kullanıyorsanız herhangi bir fonksiyonu işaret etmenize gerek yok.

Route::get('user/{id}', 'ShowProfile');

Eğer ki bu kontrolleri elle oluşturmak istemiyorsanız artisan ile oluşturmak istiyorsanız normal bir kontroller oluşturur gibi ancak –invokable parametresini ekleyerek oluşturuyoruz.

php artisan make:controller ShowProfile --invokable

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir