根据导航栏,视图不会改变

时间:2020-09-04 12:29:44

标签: php html model-view-controller bootstrap-4

你好漂亮的人

我已经在这个问题上花了一些时间了,我似乎并没有自己解决这个问题……希望您能为我提供帮助。我的目标是:在一个模式为mvc的项目中,由php控制的工作导航栏。

我想通过索引文件中的开关来控制视图:

  <?php 
  // display view according view-parameter
  switch ($view) {
    case 'home':
      include '../view/home.php'; break;
    case 'overview':
      include '../view/overview.php'; break;
    case 'settings':
      include '../view/settings.php'; break;
    default:
      include '../view/home.php'; break;
  }
  ?>

控制器更改视图。

$view = isset($_GET['view']) ? $_GET['view'] : '';

我想将此导航(引导程序)包含在开关上方的索引文件中:

  <nav class="navbar sticky-top navbar-expand-lg navbar-dark bg-dark">
    <a class="navbar-brand" href="<?php $view = 'home';?>">GG</a>
    <div class="collapse navbar-collapse">
      <div class="navbar-nav">
        <a href="<?php $view = 'home';?>" class="nav-item nav-link <?php if($view == 'home') { echo 'active'; } ?>">Home</a>
        <a href="<?php $view = 'overview';?>" class="nav-item nav-link <?php if($view == 'overview') { echo 'active'; } ?>">Overview</a>
        <a href="<?php $view = 'settings';?>" class="nav-item nav-link <?php if($view == 'settings') { echo 'active'; } ?>">Settings</a>
      </div>
    </div>
  </nav>

在这里您可以看到我如何尝试使其与php一起使用。可悲的是,它仅停留在最后一个链接“设置”上,所有项目均处于活动状态。这是我目前的情况。

1 个答案:

答案 0 :(得分:2)

在这里您可以看到我如何尝试使其与php一起使用。可悲的是,它仅停留在最后一个链接“设置”上,所有项目均处于活动状态。这是我目前的情况。

那是因为您将$view变量的值设置为给定的字符串,并检查它是否等于此字符串的值。

$view = 'home'; 

然后

$view == 'home'

将始终为真。

代替

<a href="<?php $view = 'home';?>" class="nav-item nav-link <?php if($view == 'home') { echo 'active'; } ?>">Home</a>

您需要

<a href="?view=home" class="nav-item nav-link <?php if($view == 'home') { echo 'active'; } ?>">Home</a>
相关问题