PHP foreach menu включает - PullRequest
       21

PHP foreach menu включает

0 голосов
/ 13 октября 2011

Я занимаюсь разработкой веб-сайта, и я пытаюсь включить foreach для моего заголовка, который включает мое навигационное меню (основная тема здесь).

Мой код в файле header.php для меню навигации находится здесь:

<!-- topmenu -->  
<div class="menu-header">
    <div class="container">
            <ul class="top menu">
            <?php
            $nav = array("Home","About","Portfolio","Products","Services","Contact");
            foreach($nav as $item){
            if($item == $title){
                echo "<li class='current-menu-ancestor parent'><a href='$item.php'>$item</a></li>";
                }else{
                echo "<li><a href='$item.php'>$item</a></li>"; }
                }
                ?>

          </ul>
        </div>
</div>        
<!--/ topmenu -->

Вы можете заметить, что в коде есть условие if($item == $title). В свой index.php я включил $title="Home";, который я собирался взять и использовать в этом операторе if.

На моей странице index.php я включил это в следующий код:

<?php
    include("header.php");
$title = "Home";
?>

Может кто-нибудь сказать мне, где я иду не так?

Ответы [ 3 ]

3 голосов
/ 13 октября 2011

header.php не может смотреть в будущее.Если вы хотите, чтобы переменная была установлена ​​во включении, вы должны установить ее раньше:

<?php
    $title = "Home";
    include("header.php");
?>

Таким образом, вы просто переключили линии.

Дополнительно я предлагаю включить отчет об ошибкахна самом высоком уровне, когда вы разрабатываете, так как он предупредит вас об общих ошибках, которые могут возникнуть при наборе кода.

Вы можете сделать это, добавив следующие две строки в начало вашего скрипта:

error_reporting(~0);
ini_set("display_errors", "1″);

или путем изменения конфигурации PHP.

3 голосов
/ 13 октября 2011

Не ответ, но комментарии не подходят для форматированного кода.Возможно, вы захотите лишить дубликата часть своего HTML-кода:

$class = '';
if($item == $title) {
    $class = ' class"current-menu-ancestor parent"';
}

echo "<li{$class}><a href='$item.php'>$item</a></li>";

Дублирование HTML-кода, как вы это сделали, может в дальнейшем привести к проблемам с обслуживанием, если вы решите что-то изменить в структуре меню и изменить только один изкопии меню html.

2 голосов
/ 13 октября 2011

Вам нужно установить $ title перед включением header.php!

т.е.

<?php
    $title = "Home";

    include("header.php");
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...