У меня есть простая система рендеринга шаблонов, которая включает в себя файл PHP заголовка, шаблона и нижнего колонтитула. Заголовок имеет один вызов функции PHP для отображения панели навигации. Шаблон имеет вызов функции, который устанавливает заголовок ('location ...'); а нижний колонтитул - просто базовый HTML.Странные заголовки PHP уже отправлены
Когда я просматриваю страницу, я получаю сообщение «уже отправленные заголовки», указав строку в заголовке, которая заставляет вызов эха покинуть панель навигации. Если я модифицирую код для удаления дочерних элементов в навигации, я не получаю ошибку «отправленные заголовки». Элементы-дочерние элементы - это не что иное, как элементы массива. Если я заменю их фиктивным текстом, страница будет перенаправлена правильно.
Я предполагаю, что это что-то очень простое, но это меня озадачило!
header.php (прерывания INT передается в определяет глубину сканирования)
<ul class="nav navbar-nav"><?php echo getNavigation(1); ?></ul>
template.php
// Run from start
default:
$_SESSION['updateStart'] = microtime(true);
$_SESSION['updateErrors'] = array();
$_SESSION['updateLog'] = array();
header('location: /update-products?action=getDataFeeds');
exit();
break;
getNavigation функция:
function getNavigation($depth) {
global $path, $misc;
$items = $misc->getNavigation(1,(int)$depth,true);
$nav = "";
if($items) {
foreach($items as $item) {
$class = ($item['ob_alias']==("/".$path[0])?' class="active"':'');
$nav .= '<li'.$class.'>';
if(isset($item['children'])) {
$nav .= '<a href="#" class="dropdown-toggle" data-toggle="dropdown">'.$item['ob_label'].' <span class="caret"></span></a>';
$nav .= '<ul class="dropdown-menu" role="menu">';
foreach($item['children'] as $child) {
$class = ((isset($path[1]) && $child['ob_alias']==("/".$path[1]))?' class="active"':'');
$nav .= '<li'.$class.'><a href="'.$child['ob_alias'].'">'.$child['ob_label'].'</a></li>';
}
$nav .= '</ul>';
} else {
$nav .= '<a href="'.$item['ob_alias'].'">'.$item['ob_label'].'</a>';
}
$nav .= '</li>';
}
}
return $nav;
}
Я пытался пройдите через мой код и все, что я могу сделать, чтобы переключить ошибку Vs. имея страницы перспективе, как ожидается, чтобы заменить эту строку в моей getNavigation() вызов:
$nav .= '<li'.$class.'><a href="'.$child['ob_alias'].'">'.$child['ob_label'].'</a></li>';
с
$nav .= '<li>Some dummy text</li>';
Тогда это нормально. Я не понимаю, почему включение двух строк элемента массива приведет к сломанию «заголовков».
Любая помощь, или указатели на то, что нужно проверить, будет наиболее желанной.
Спасибо за ваш ответ. У меня сначала был поиск, и я нашел этот пост. У меня есть функция рендеринга, которая делает «include» для заголовка, файла, затем делает файл_get_contents & echo на шаблоне, и, наконец, еще один включает нижний колонтитул. Это странно, потому что я нахожусь, чтобы прокомментировать элементы дочернего навигатора, чтобы он работал. Я бы понял, если какой-либо вывод из заголовка вызвал ошибку, но это только те $ дочерние элементы. –