Задать вопрос
@Zuoya

Как сделать шаблоны в php?

Добрый день! Можете дать пример как сделать рендер шаблона на php.
Мне нужно вывести список , например постов. На Go я бы сделал так
{{define "result"}}
    {{range .Posts}}
    <div class = "post">
        <section class="postLeft">
            <section class="postLeft-block">
                <div class="postTextLeft"> рейтинг </div>        
                <div class="postText">Rating:{{.Rating}} </div>                       
            </section>
            
        </section>
     
    {{end}}
{{end}}

Я искал в интернете, но все что я нашел это примитивные методы рендера шаблона, которые надо подключать через include
  • Вопрос задан
  • 337 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 1
nefone
@nefone
Junior PHP разработчик
Если не подходят что то из готовых шаблонизаторов типа Smarty
Можете сделать свой на основе PHP функций работы с буфером вывода:
ob_start
ob_get_clean
/**
 * Функция загрузки шаблона
 * 
 * @param string $template Путь до файлов шаблона
 * @param mixed[] $data Данные для подстановки в шаблон
 * @return string Возвращает готовый код шаблона
 */
 function render_template($template, $data) {
     ob_start();
     if (file_exists($template)) {
         extract($data);
         require($template);
     } else {
         print('Нет файла шаблона: '.$template);
     }
     $html = ob_get_clean();
     return $html;
 }


Пример использования:
$content = render_template('templates/main.php', ['title' => 'Главная страница');

echo $content;


Код main.php
<html>
 <head>
    <title><?=$title?></title>
 </head>
</html>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
Вам нужен шаблонизатор. Вариантов масса:
Я предпочитаю Smarty почему-то.
Ещё, очень популярен Blade в силу того, что он используется в Laravel.
Mustache доступен не только для PHP, а ещё для массы других языков. Я его в JS использовал.
+ Twig

Это первые, что приходят в голову. Если погуглите - найдёте ещё миллион.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы