0

我有一件小事我想不通。

我有一个页面,其中有 6 个步骤。如何在下一步处于非活动状态且所有先前步骤处于活动状态的情况下制作类似导航的面包屑?

IE。

步骤 1 > 步骤 2 > 步骤 3 > 步骤 4 > 步骤 5 > 步骤 6

当我在第 4 步时看起来像这样

步骤 1 >步骤 2 >步骤 3 >步骤 4 > 步骤 5 > 步骤 6

这些活动步骤将在 url 中有一个参数指向该步骤页面。

即第 1 步的页面参数是 page=intro

希望有人可以帮忙?

- - - - 解决方案 - - - -

session_start();
$_SESSION['page'][] = $_GET["page"];

$steps = array(
    "selecthouse" => "Vælg hustype og tagform",
    "selectrooftile" => "Vælg tagsten",
    "angleinput" => "Tagvinkel",
    "rfinish" => "Tag-detaljer",
    "inputdims" => "Indsæt mål",
    "matliste" => "Materiale-liste",
    );

foreach($steps as $key => $value) {
    if(in_array($key, $_SESSION['page'])) {       
        echo '<a href="?page='.$key.'">'. $value .'</a></b> >';
    } else {
        echo $value ." > ";
    }
}
4

1 回答 1

1

有很多方法可以做到这一点,最好的方法真的取决于你的代码的其余部分。

我个人对这样的线性导航的偏好是将用户访问的页面存储在会话中的数组中,例如

<?php
  session_start();
  $_SESSION['pages'][] = $_SERVER['REQUEST_URI'];
?>

然后你需要做的就是在“面包屑”中的每个项目周围放置一个 if 数组,例如

<?php
  if (in_array('/step1.php',$_SESSION['pages'])) {
    ?>
    <a href="/step1.php">Step 1</a>
    <?php
  } else {
    ?>
    Step 1
    <?php
  }
?>

编辑

从您新发布的代码中,有一个结束</b>但没有开始标签。

至于取消设置恢复到一个步骤,你最好做这样的事情:

<?php
  $stepskeys = array_keys($steps);
  $_SESSION['pages'] = array(
    0 => $stepskeys[1],
    1 => $stepskeys[2],
    2 => $stepskeys[3]
  );
?>

这会将阵列重置回第 3 步。

于 2012-08-01T09:46:06.807 回答