Kontrolcüler

  • Tarih : 19.01.2020 11:52
  • Son Güncelleme : 21.05.2025 05:51

Framework üzerinde uygulanan MVC Mimarisinin Base Controller(Kontrolcü) nesnesidir. Bu nesne kontrolcüler için model yükleme işlemini gerçekleştirmek, kontrolcülerin index metodunu tanımlamasını zorunlu hale getirmek için oluşturulmuş soyut bir nesnedir.

Oluşturulan tüm kontrolcüler bu nesneden türemelidir.

Nesne kullanılabilir yalnızca 1 adet metoda sahiptir. Bu metot(loadModel) kontrolcü içine model yükleme işlemini gerçekleştirir. Bu metotda Görünüm Nesnesindeki Render metodu gibi hangi bölüme ait (Yönetim Paneli, Önyüz) kontrolcü içinden model yüklenmeye çalışılıyorsa o bölüme ait model dosyasını yüklemektedir.

 

Yeni Bir Kontrolcü Türetme (Önyüz)

Uygulamanızın ön yüze ait "Example" adında yeni bir kontrolcü oluşturmak ve bu kontrolcü içine "test" modelini yüklemek için ilk olarak ./controllers dizininde example.php adında bir dosya oluşturup içine aşağıdaki kodları yerleştirin.

<?php

namespace Frontend\Controllers;

use Ataworks\Http\Controller;

class Example extends Controller
{
    public function __construct()
    {
        /* Modeli yükle ve sabite ata */
        $this->model = $this->loadModel('test'); 
    }

    public function index()
    {
        print_r($this->model);
    }
}

Yukarıdaki kod bloğunda kontrolcünün namespace i "Frontend\Controllers" olduğundan ve bu kontrolcünün ön yüzde bulunmasından dolayı, Ön yüze ait test modeli yüklenmektedir. Biraz daha açmak gerekirse ./models/ klasörü altında "test" ismiyle oluşturulmuş model nesnesini kontrolcü içine dahil etmektedir.

 

Yeni Bir Kontrolcü Türetme (Yönetim Paneli)

Yukarıda ki örneğin aynısı yönetim paneli için oluşturmak için ilk olarak ./dashboard/controllers dizininde example.php adında bir dosya oluşturup aşağıdaki kodları içine yerleştirin.

<?php

namespace Backend\Controllers;

use Ataworks\Http\Controller;

class Example extends Controller
{
    public function __construct()
    {
        /* Modeli yükle ve sabite ata */
        $this->model = $this->loadModel('test'); 
    }

    public function index()
    {
        print_r($this->model);
    }
}

Bu sefer loadModel metodumuz ./models dizininde değilde, ./dashboard/models klasöründe yer alan "test" modelini yüklemektedir.