сделать загрузочную навигационную панель динамической с помощью php - PullRequest
0 голосов
/ 07 октября 2018

Я сделал сайт в начальной загрузке, и теперь я пытаюсь сделать его более динамичным.Курс, по которому я следую, это не использование начальной загрузки.Это что-то действительно очевидное, что я скучаю?Пожалуйста, вы можете просмотреть мой код?

(я не хочу перегружать этот пост кодом, поэтому показываю только nav.php и array.php). Я включил nav.php в заголовок внутри<nav></nav> и array.php в самом верху.

Любая помощь будет очень признательна - я только начинаю свое путешествие, поэтому, пожалуйста, будьте осторожны со мной, как будто я не знаю многопотому что это правда, я не знаю!: -)

//nav.php which I took out of the header
<a class="navbar-brand" href="index.html">Harrisons      Hair &amp; Beauty</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse justify-content-end" id="navbarNav">
<ul class="navbar-nav">

    <?php 

        foreach($navItems as $item){
            echo "<li class=\"nav-item\">
                  <a class=\"nav-link\"  href=\"$item[slug]\">$item[title]</a>
                  </li>";
        }

    ?>

</ul>
</div>


// array.php
<?php

    $navItems = [
        [
        slug => "index.php"
        title => "Home"
    ],
        [
        slug => "about.php",
        title => "About"
    ],
        [
         slug => "gallery.php",
         title => "Gallery"

    ],
        [
        slug => "other.php",
        title => "Other Services"
    ],
        [
        slug => "contact.php",
        title => "Find Us"
    ],
        [
        slug => "test.php",
        title => "Test Page"
    ]
];
?>

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

Ваш массив искажен.Оберните ключи в "" и добавьте запятую за "index.php".Также измените foreach($navItems as $item){ на foreach($navItems as $key => $item){, чтобы получить значения вложенного массива (nav-items).

С этими настройками ваш код работает просто отлично.

<!doctype html>
<html lang="en">
<head>
    <!-- required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

    <!-- Libraries - jQuery first, then Popper.js, then Bootstrap.js -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
</head>
<body>
<?php
$navItems = [
    [   // keys (i.e. slug and title) need surrounding ""
        "slug" => "index.php", // missing comma
        "title" => "Home"
    ],
    [
        "slug" => "about.php",
        "title" => "About"
    ],
    [
        "slug" => "gallery.php",
        "title" => "Gallery"

    ],
    [
        "slug" => "other.php",
        "title" => "Other Services"
    ],
    [
        "slug" => "contact.php",
        "title" => "Find Us"
    ],
    [
        "slug" => "test.php",
        "title" => "Test Page"
    ]
];
?>

<!-- nav.php which I took out of the header -->
<a class="navbar-brand" href="index.html">Harrisons      Hair &amp; Beauty</a>
<button style = "color: #0000FF !important; border: 1px solid blue !important;" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
    toggle menu<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse justify-content-end" id="navbarNav">
    <ul class="navbar-nav">

        <?php

        foreach($navItems as $key => $item){

            echo "<li class=\"nav-item\" style='color: #FFFFFF !important;'>
                  <a class=\"nav-link\"  href=\"$item[slug]\">$item[title]</a>
                  </li>";
        }

        ?>

    </ul>
</div>

</body>
</html>
0 голосов
/ 07 октября 2018

Для объединения строк в ваших эхо-выражениях вы можете использовать

  • echo "..." . $item['slug'] . "..." или
  • echo "... {$item['slug']} ...".

Также убедитесь, чтообъявление массива $navItems находится перед оператором вывода echo.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...