Laravel 4 Routing Resorce-Controller-Farkı

Merhaba Arkadaşlar ,

Laravel yazı dizilerime routing ile devam ediyorum. Daha önce bir php framework kullandıysanız routing size yabacı olmasa gerek. Benim değinmek istediğim nokta Resource ve Controller routing tasarım farkı ve neden tercih edilmesi hakkında olacak.

Temel routing ile ilgili daha ayrıntılı bilgiyi Laravel sitesinden alabilirsiniz.

Get Routing

  • Route::get('/', function()
    {
        return 'Hello World!! Muharrem Tigdemir';
    });

    Get methodu iki parametre alıyor. URI ve fonksiyon. http://localhost

    Routing Parametreler

  • Route::get('test/{id}', function($id)
    {
        return 'Test Value : '.$id;
    });

http://localhost/test/4

Post Routing

  • Route::post('post/test', function($id)
    {
        return 'Post'. $id;
    });

    Get ile aynı kullanıma sahip post yapısı.  http://localhost/post/test

Any Routing

Evet temel Routing öğrendik peki Route:controller ve Route:Resource farkı ne? Bunu anlayabilmek için öncelikle birer route tanımlayarak çıktılarını inceleyelim.

  • Route::controller('test' , 'TestController');
    
    Route::resource('photo', 'PhotoController');

    Ben yukarıdaki iki routing’i tanımladım.

  • php artisan route

    Konsoldan yukarıdaki komutu yazdığımızda

Laravel Route

Laravel Route Resource ve Controller

Yukarıdaki resimden görebileceğiniz gibi Laravel önceden tanımlı(pre-defined) fonksiyonları arıyor ve bazılarını missing olarak gösteriyor.

Resource  Methodları

  1. index
  2. create
  3. store
  4. show
  5. edit
  6. update
  7. destroy

Controller Methodları

  1. getIndex
  2. postSecond

Gerçekten lafı biraz uzattım sonuç olarak..

Controller Routing

Eğer standartlara uygun Routing yapmak istiyorsanız Controller seçiminiz olmalı. Yeni bir method tanımlarken dikkat etmeniz gereken. Get method için fonksyionun ismi get ile başlamalı ve devam eden ilk harf büyük olmalı. Post method için fonksyion post ile başlamalı ve devam eden ilk harf büyük olmalı. Örnek Routing ve sonucu..

  • class TestController extends BaseController {
    	public function getIndex()
    	{
    		// URL /test
    		echo "Index Sayfası";
    	}
    
    	public function getMy()
    	{
    		// URL /test/my
    		echo "My fonksyionu";
    	}
    
    	public function getMylist()
    	{
    		// URL /test/mylist
    		echo "My List fonksyionu";
    	}
    
    	public function postProfile()
    	{
    	    // URL /test/profile NOT : POST
    		echo "Post Method";
    	}
    
    }
  • Route::controller('test' , 'TestController');

Resource Routing

Eğer CRUD işlemleri yapacağınız bir senaryo var ise seçiminiz Resource Routing olmalı.

  • Route::resource('photo', 'PhotoController');

     

 

Muharrem Tığdemir

Leave a Reply