villiwalla
@villiwalla
HTML-верстка

Как собираются шаблоны страниц?

Подскажите, как собрать шаблон страницы использую только 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');
 }
}
  • Вопрос задан
  • 133 просмотра
Пригласить эксперта
Ответы на вопрос 1
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы