mam pewien problem. Na stronie chciałbym mieć menu, które będzie pobierane z bazy danych. Chciałbym aby to menu było automatycznie generowane i wstawiane do szablonu. Nie mogę sobie poradzić z pełną automatyzacją tego zadania.
MY_Controller.php
<?php class Controller extends Controller_Core { public function __construct() { parent::__construct(); $this->template = Config::item('shop.views').'/template'; // zbedny kod $this->getMenu(); } protected function getMenu() { $this->menu = new View('_global/menu'); $this->menu = $this->menu->render(); } } ?>
oraz przykładowy plik kontrolera:
<?php class Registration_Controller extends Template_Controller { public function index() { // zbedny kod $this->template->content = $form->html('_global/registration/form', true); $this->template->menu = $this->menu; } } ?>
W template.php wyświetlam menu poprzez:
<?= $menu ?>
W takiej formie wszystko działa poprawnie. Chciałbym jednak pozbyć się przypisania $this->template->menu w każdym kontrolerze. Próbowałem na różne sposoby, m.in.:
<?php class Controller extends Controller_Core { public function __construct() { parent::__construct(); $this->template = new View(Config::item('shop.views').'/template'); // zbedny kod $this->getMenu(); } protected function getMenu() { $this->menu = new View('_global/menu'); $this->template->menu = $this->menu->render(); } } ?>
ale za każdym razem otrzymuję nieznaną zmienną $menu (odpowiedni wpis z samego kontrolera oczywiście usunąłem). Jak rozwiązać ten problem?
Reasumując: w głównym szablonie chciałbym wczytać menu, które będzie generowanie dynamicznie na podstawie bazy danych (coś a'la komponent w Symfony).
Pozdrawiam,
pion