Как исправить код работы с шаблонами?

Код рабочий, пути верные, вывод в шаблонах верный.

Массив pageMenuArray передается в метод ShowMenu.
Метод ShowMenu передает массив и имя шаблона в GetTemplateCode.
В этом методе вызывается шаблон, подставляется код и возвращается html код меню.

В чем проблема - невозможно вывести два меню одновременно.
Закомментировав Код 1, можно вывести меню 2.
Закомментировав Код 2, можно вывести меню 1.
Раскомментировав Код 1 и Код 2 не будет выведено ни одного меню.

Как исправить код работы с шаблонами?
class HTML
{
// Получить код из шаблона.
static function GetTemplateCode($templateFileName, $templateArgumentsArray) {
$templateFullPath=$_SERVER['DOCUMENT_ROOT'].'/templates/'.$templateFileName;
ob_start();
include_once $templateFullPath;
return ob_get_clean(); // Похоже, что проблема тут.
}

// Код меню.
static function ShowMenu($menuArray) {
return HTML::GetTemplateCode('Menu.html', array($menuArray));
}
}


// Код 1. Если закомментировать, то будет выведено menu2
$pageMenuArray[0] =  ['menu-link_normal','https://www.test.ru', 'Текст ссылки1', 'visible'];
$pageMenuArray[1] =  ['menu-link_active','www.test.ru1', 'Текст ссылки11', 'visible'];
$menu1=HTML::ShowMenu($pageMenuArray);

// Код 2. Если закомментировать, то будет выведено menu1
$panelMenuArray[0] =  ['menu-link_normal','https://www.test111.ru', 'Текст ссылки2', 'visible'];
$panelMenuArray[1] =  ['menu-link_active','www.test.ru1', 'Текст ссылки22', 'visible'];
$menu2=HTML::ShowMenu($panelMenuArray);

// Если оставить так - Код1 и Код2 - не будет выведено ничего.

// Два меню никогда не будет выведено.
echo $menu1.'<br>';
echo $menu2.'<br>';
exit;
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ответы на вопрос 1
Fockker
@Fockker Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Интересно, когда люди научатся читать документацию на функции, которые используют.
Ну или хотя бы поинтересуются, что по-английски означает слово "once" ...
Ответ написан
Ваш ответ на вопрос

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

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