Подскажите, как собрать шаблон страницы использую только php как шаблонизатор (без всяких смарти, твигов, феномов и т.д). На гуглить побывал и наютубить тоже, везде примеры мохнатых времён от php4 до 5.2 и не рассматривается вложенность шаблонов.
Понятно что можно на суперклассе контроллеров в конструкторе создать экземпляр (Template) шаблонизатора и уже на дочерних контроллерах использовать
$this->render('index', ['arg' => 'agr']) для рендера вьюхи.
Буду признателен за ссылки на примитивные реализации шаблонизации :)
Знаю что в yii2 в создаём файл с именем layout где основной скелет разметки имеет в центре вывод разметки указанной в методе контрорллера $this->render('view', []);
Не понятно то, как можно отделить
layout (шапку и футер) и пропускать через него вьюху экшена не имеющей шапки и футера? Не указывать в методе контроллера постоянно на лайоут, а указывать только на кусочек html и выводить его в центре лайоута.
interface Template {
public function render($tpl);
}
class View implemets Template {
....
public function render($tpl) {
if(file_exist(TPLDIR.$tpl.'.php')) {
ob_start();
extract($this->data);
required_once TPLDIR.$tpl.'.php';
$content = ob_get_contnet();
return ob_get_clean();
} else {
throw new Exception('Шаблон '.$tpl.' не найден');
}
}
class Controller implemets Template {
...
public $template;
...
public function __constract() {
$this->template = new View();
}
public function render($tpl) {
$this->template->render($tpl);
}
}
class SiteController extends Controller {
public function index() {
$this->set('title', 'lalala');
$this->render('index');
}
}