包含返回上一个文件夹的链接的面包屑

时间:2016-12-13 23:00:35

标签: php html arrays get

今天我们正在为新的主机控制面板界面制作文件管理器脚本,我们希望制作用户可以点击的面包屑返回到它之前的路径。到目前为止,他们出现了这样的

navbits

我认为看起来不错。前三个链接是静态的,永远不会更改,并且用户越远离/home越远,链接添加到面包屑的次数越多。现在,如果你在我们这里的目录/home/www/usr/,那么网址看起来像这样:

/filemanager.php?do=browse&dir=www/usr

然后我们在由/分隔的所有项之间展开$_GET['dir']并将它们添加到数组中。然后我们遍历数组,foreach我们将<li>$i</li>打印到面包屑区域。

现在的问题是,我们如何让菜单中每个项目的链接保留其父文件夹和/如果有?当用户在此示例中点击www时,它会起作用,因为它与名称相同,但任何子li都需要www /添加到前端,以及任何其他父项。有点难过。

这是我们正在使用的LI添加流程:

if(isset($_GET['dir']) && !empty($_GET['dir'])) {
    $breadcrumb_list = array();
    $breadcrumb_list = explode("/", $_GET['dir']);
    echo "<li><a href=\"filemanager?do=browse\">Home</a></li>\n";
    foreach($breadcrumb_list as $i) {
        echo "<li><a href=\"filemanager?do=browse&amp;dir={$i}\">{$i}</a></li>\n";
    }
}

任何和所有帮助将不胜感激!谢谢你们!

1 个答案:

答案 0 :(得分:1)

foreach循环之前创建新变量,例如

$path = '';

然后在每次迭代中添加路径的当前部分:

$path .= '/'.$i;

所以它看起来像那样:

$path = '';
foreach($breadcrumb_list as $i) {
    $path .= '/'.$i;
    echo "<li><a href=\"filemanager?do=browse&amp;dir={$path}\">{$i}</a></li>\n";
}