Laravel Controller Kullanımı

MVC framework'de "C" harfi controler(Denetleyici) anlamına gelir. HTTP isteklerini alır views ve Modeller arasında yönlendirici bir trafik görevi görür.

Laravel'de App/Http/controllers dizinin içinde Tüm Kontrollürler(denetleyiciler) Depolanır.

Temel Controller OluÅŸturma

Kontrollür Aşağıda artisan komutu ile oluşturulur.

Sözdizimi:

php artisan make:controller <controller-name>

<controller-name> yerine istediğiniz controller ismi girebilirsiniz. Anacontroler adında bir controller oluşturalım.

Terminal, CMD veya Git Bash programı açın Aşağıdaki komutu girin.

php artisan make:controller Anacontroler

Komutu çalıştırdığımızda App/Http/controllers/Anacontroller.php dosyamızın oluşturulduğunu göreceksiniz. Artisan komutu girmedende controller dosyamızı oluştururuz namespace alanlarını artisan komutu otomatik bizim adımıza oluşturarak bize kolaylık sağlar. Oluşturulan dosyanın içeriğini görelim.


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class Anacontroller extends Controller
{
    //
}
	

Controller oluşturulduktan sonra routes/web.php dosyasında Rota tanımlanarak çağrılabilir.

Sözdizimi:


Route::get('base URI','controller@method')

Oluşturduğumuz Anacontroller için Anasayfa isminde istekte bulunalım ve buna göre Rotamızı yazalım.

URL adresinde localhost:8000/Anasayfa diye istekde bulunalım.


Route::get('Anasayfa','Anacontroller@index')

Anacontroller dosyasındada index methodunu oluşturalım.


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class Anacontroller extends Controller
{
    Function index()
    {
    	//
    }
}	

Parametreleri kontrollüre Aktarma

Parametreyi kontrölüre aktarmak istiyorsanız aşağıdaki şekilde kolayca oluşturulur.

Routes/web.php dosyasını açın aşağıdaki gibi yeniden oluşturun.


Route::get('/Anasayfa{name}','Anacontroller@index');

Oluşturduğumuz Anacontroller.php dosyasını açın ve "index" methodunu aşağıdaki gibi güncelleyin.


function index($name)
{
	return $name;
}

name, paremetresi girilmeyecekse method'da $name=null; eşitleyin. Tabiki controller'de ekrana yazdırma işlemi kullanılmaz views'de yazdırılır biz deneme yapmak için yazdırdık.

Kaynak(Resource) Denetleyicileri

Dinamik website tasarımlarında CRUD(Oluşturma, Okuma, Güncelleme ve Silme) Temel işlemlerdir. Bir Kaynak Controller ile CRUD işlemleri gerçekleştirmek için Tüm Methodlar içeren genel bir controller yapısı elde edersiniz. Larevelde tek bir artisan komutu ile oluşturabilirsiniz. Laravelde CRUD işlemleri için tek tek method oluşturma zahmetli bir iş, tüm Methodu tek bir artisan komutu ile oluşturulur.

Kaynak Controller OluÅŸturma

Larevel'de, kaynak denetleyicisi oluşturmak için kullanılan komut normal controller oluşturucu artisan komutu ile aynıdır. controller oluşturucusunun en sonuna resource eklemeniz gerekir.


php artisan make:controller PostController --resource

Yukarıdaki komut yürütüldüğünde App/Http/Controllers içinde bulunan controller klasöründe index, create, store, show, edit, update ve destroy methodlarına sahip bir PostController denetleyicisi sınıf dosyası oluşturulur.

app/Http/Controllers/PostController.php dosyasının içeriği:


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PostController extends Controller
{

    public function index()
    {
        //
    }


    public function create()
    {
        //
    }


    public function store(Request $request)
    {
        //
    }


    public function show($id)
    {
        //
    }


    public function edit($id)
    {
        //
    }


    public function update(Request $request, $id)
    {
        //
    }

    public function destroy($id)
    {
        //
    }
}
	

Controller oluşturulduktan sonra, Routes/web.php dosyasında yukarıdaki kaynak denetleyicisinin Rota bildirimi şöyle olur:


Route::resource('posts','PostController'); 

Git Bash, CMD veya Terminal Penceresini açın ve php artisan route:list komutunu girin. Bu komut aşağıdaki çıktıyı üretir:

 laravel controller

Resource() methodundaki post parametresi, yukarıdaki çıktıda gösterilen adları veya kaynakları ve karşılık gelen methodları üretir. Yukarıdaki çıktıda, posts.destroy, Laravel'de çok özel olan Delete yöntemine bir parametre gönderiyor.

Verb URI Action Route Name
GET /posts index posts.index
GET /posts/create create posts.create
POST /posts store posts.store
GET /posts/{id} show posts.show
GET /posts /{id}/ edit edit posts.edit
PUT/PATCH /posts/{id} update posts.update
DELETE /posts/{id} destroy posts.destroy

Kaynak(Resource) kavramını bir örnek üzerinden anlayalım.

PostController sınıfının show() methoduna erişme

PostController.php dosyasının show() methodunu çağırmak istediğimizi varsayalım. Bunu yapmak için show() methodunda kodu ekleyin. Show() methodunda aşağıdaki kodu ekledim:


public function show($id)  
{  
return "show method is called and ID is : ". $id;  
}  

Posts.show'un URI'sinin posts / {posts} olduğunu bildiğimiz için, PostController sınıfının show() yöntemine erişmek için parametreyi de girmemiz gerektiği anlamına gelir.

URL'yi http://localhost:8000/posts/58 olarak girdiğimi varsayalım , bu durumda çıktı:

 laravel controller

PostController sınıfının create() methoduna erişme

İlk olarak, create() methoduna kodları eklememiz gerekir. Aşağıdaki kodu ekleyelim:


public function create()  
{  
     return "create methodu";  
}  

Posts.create öğesinin URI'sinin posts/create olduğunu bildiğimiz için, create() methoduna erişilecek URL http://localhost:8000/posts/createolur.

Tarayıcıya http://localhost:8000/posts/create URL'sini girin , ardından çıktı şöyle olur:

 laravel controller

Birden fazla kontrol cihazı için rota kaydetme

Resources Methoda bir dizi ileterek aynı anda birden çok denetleyicinin yolunu kaydedebiliriz. PostController ve PhotoController gibi iki controller rotalarını kaydetmek istediğimizi varsayalım. Bunu için adımlar şunlardır:

İlk olarak, aşağıdaki komutları kullanarak PostController ve PhotoController'ı oluşturmanız gerekir :


php artisan make:controller PostController;  //PostController OluÅŸturur.  
php artisan make:controller PhotoController;  //PhotoController OluÅŸturur.

Rotaları kaydetmek için web.php dosyasına aşağıda verilen kodu ekleyin:


Route::resources([
    'photos' => 'PhotoController',
    'posts' => 'PostController'
]);

Git Bash, CMD veya terminal Penceresinde php artisan route:list komutunu girin.

 laravel controller

Yukarıdaki ekran hem PostController hem de photoController rotalarının kaydedildiğini göstermektedir.

Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır. Lütfen Yukarıda ki mesajları okuyun tekrar aynı soruları sormayın.

2623

KATEGORÄ°
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MÄ°THRÄ°L FRAMEWORK
  • Laravel
  • Git
  • React
POPÃœLER MAKALE
  • HTML LÄ°NK(BaÄŸlantı)EKLEME - LÄ°NK VERME
  • HTML YAZI VE RESÄ°M ORTALAMA
  • HTML RESME LÄ°NK VERME
  • HTML FORM OLUÅžTURMA
  • CSS YATAY MENÃœ YAPIMI
  • HTML RESÄ°M EKLEME
  • CSS (BOYUT) GENÄ°ÅžLÄ°K VE YÃœKSEKLÄ°K (Width-Height)
  • HTML DÄ°V ve SPAN NEDÄ°R?
  • HTML ARKAPLANA MÃœZÄ°K EKLEME
  • KALÄ°TE KAYBETMEDEN RESÄ°MLERÄ° BÃœYÃœTME
ETÄ°KET
WEBCEBİR © 2013 Tüm hakları saklıdır.