Здравствуйте!
Вот мой код шаблона:
<section class="promo">
<h2 class="promo__title">Нужен стафф для катки?</h2>
<p class="promo__text">На нашем интернет-аукционе ты найдёшь самое эксклюзивное сноубордическое и горнолыжное снаряжение.</p>
<ul class="promo__list">
<li class="promo__item promo__item--boards">
<a class="promo__link" href="all-lots.html">Доски и лыжи</a>
</li>
<li class="promo__item promo__item--attachment">
<a class="promo__link" href="all-lots.html">Крепления</a>
</li>
<li class="promo__item promo__item--boots">
<a class="promo__link" href="all-lots.html">Ботинки</a>
</li>
<li class="promo__item promo__item--clothing">
<a class="promo__link" href="all-lots.html">Одежда</a>
</li>
<li class="promo__item promo__item--tools">
<a class="promo__link" href="all-lots.html">Инструменты</a>
</li>
<li class="promo__item promo__item--other">
<a class="promo__link" href="all-lots.html">Разное</a>
</li>
</ul>
</section>
<section class="lots">
<div class="lots__header">
<h2>Открытые лоты</h2>
</div>
<ul class="lots__list">
<?php foreach($lots as $key => $lot) { ?>
<li class="lots__item lot">
<div class="lot__image">
<img src="<?=$lot['image']?>" width="350" height="260" alt="<?=$lot['name']?>">
</div>
<div class="lot__info">
<span class="lot__category"><?=$lot['category']?></span>
<h3 class="lot__title"><a class="text-link" href="lot.html"><?=$lot['name']?></a></h3>
<div class="lot__state">
<div class="lot__rate">
<span class="lot__amount">Стартовая цена</span>
<span class="lot__cost"><?=format_sum($lot['price'])?></span>
</div>
<div class="lot__timer timer">
</div>
</div>
</div>
</li>
<?php } ?>
</ul>
</section>
А вот функция-шаблонизатор:
<?php
function render_template($template, $variables = []) {
if (!file_exists($template)) return false;
extract($variables);
ob_start();
require $template;
return ob_get_clean();
}
Вот так я ее использую в коде:
<?php
require_once 'functions.php';
$is_auth = (bool) rand(0, 1);
$user_name = 'Константин';
$user_avatar = 'img/user.jpg';
$categories = ['Доски и лыжи', 'Крепления', 'Ботинки', 'Одежда', 'Инструменты', 'Разное'];
$lots = [
[
'name' => '2014 Rossingdol District Snowboard',
'category' => 'Доски и лыжи',
'price' => 10999,
'image' => 'img/lot-1.jpg'
],
[
'name' => 'DC Ply Mens 2016/2017 Snowboard',
'category' => 'Доски и лыжи',
'price' => 159999,
'image' => 'img/lot-2.jpg'
],
[
'name' => 'Крепления Union Contact Pro 2015 года размер L/XL',
'category' => 'Крепления',
'price' => 8000,
'image' => 'img/lot-3.jpg'
],
[
'name' => 'Ботинки для сноуборда DC Mutiny Charocal',
'category' => 'Ботинки',
'price' => 10999,
'image' => 'img/lot-4.jpg'
],
[
'name' => 'Куртка для сноуборда DC Mutiny Charocal',
'category' => 'Одежда',
'price' => 7500,
'image' => 'img/lot-5.jpg'
],
[
'name' => 'Маска Oakley Canopy',
'category' => 'Разное',
'price' => 5400,
'image' => 'img/lot-6.jpg'
],
];
function append_rubble($price) {
return $price . ' ₽';
}
function format_sum($num) {
return $num >= 1000 ? append_rubble(number_format($num, 0, '.', ' ')) : append_rubble($num);
}
$page_content = render_template('templates/layout.php', ['lots' => $lots]);
$layout_content = render_template('templates/index.php', [
'content' => $page_content,
'categories' => $categories,
'title' => 'Yeticave'
]);
print($layout_content);
В итоге вижу такое сообщение на странице:
Почему такое может происходить? Почему он не видит эту переменную $lots?
upd1: если проверить значение переменной $lots в шаблоне через var_dump(), то в ответ приходит NULL.
upd2: $is_auth - это переменная, которая показывает, авторизованный пользователь или нет (рандом сейчас, т.к это просто заглушка, функционал еще не реализован этого).
она на этот шаблон никак не влияет, т.к. используется в другом месте.