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:
<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.
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:
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ı:
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/create
olur.
Tarayıcıya http://localhost:8000/posts/create
URL'sini girin , ardından çıktı şöyle olur:
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.
Yukarıdaki ekran hem PostController hem de photoController rotalarının kaydedildiğini göstermektedir.
- HTML
- CSS
- PHP
- JQUERY
- PHOTOSHOP
- JavaScript
- Web Dünyası
- Linux
- MÄ°THRÄ°L FRAMEWORK
- Laravel
- Git
- React
- 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