BaseController'da tanimlanmis olan bir datayi her sayfanin view'inde render edilirken tanimlama hakkinda

Merhabalar,
BaseController dosyamda footerda yayinlamak icin blog datalarini cekiyorum database'den fakat her sayfada gozukmesi icin controller dosyasinda View::render dosyasinda array olarak bu datayi gondermem gerekiyor. Bunun daha kolay bir yolu var mi ?
Ornegin; 20 sayfam varsa 20 sayfa icinde bunu tanimlamam gerekiyor.

Cevaplar (2)


Altan Öztürk
PHP Developer
2 yıl önce

Ben bu sorunu layout_helper adında bir helper oluşturup içerisine her yerde kullanacağım sorguları fonksiyonlar halinde base controller içerisine import ederek çözdüm farklı bir çözümü varsa bende merak ediyorum takipteyim.
NegaXY
PHP Developer
7 ay önce

Ben bu işlemi şu şekilde yapıyorum.

BaseController.php :

namespace AppControllers;

use SystemKernelController;

class BaseController extends Controller
{
protected $pageData = [];

public function __construct()
{
$this->pageData['data_key'] = 'data_value';
}
}


Base Controller'da __construct ile Base Controller her çalıştığında çalışacak kod tanımlamalarını yapmış oluyorum.

Şimdi sırada Router ile tetiklenecek Controller ve Method tarafına geçersek,

HomeController.php :

namespace AppControllers;

use View;

class HomeController extends BaseController
{

public function index()
{
$this->pageData['title'] = 'title_value'; // Bu tanımlama Home içerisinden yapılıyor

View::render('index', $this->pageData); // extend edilen Base den pageData array View a gönderiliyor.
}
}


Önemli nokta HomeController'ın BaseController'dan extend edilmesi ve Base'de array data tanımlamalarını yaptığınız değişkeni $this ile Home da almak.

Cevap Yazın


[code=php,css,sql]kod[/code] , [url=http:...com] , [img=imaj linki] , [color=renk_kodu]metin[/color]