yii 多层url的面包屑

oyxsuwqo  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(154)

我想创建多级面包屑,就像如果用户转到主页-〉步骤1-〉步骤2-〉步骤3页面,然后转到步骤4:我想看看我的面包屑主页:-〉步骤1-〉步骤2-〉步骤3-〉-〉步骤4.
下面是我的代码:

<?php 
    $path = parse_url($_SERVER['HTTP_REFERER'],PHP_URL_PATH);
    $parts = explode('/',$path);
    $stepname='Step'.$step->step_code;
    if (count($parts) < 2)
    {
        echo("home");
    }
    else
    {
        for ($i = 2; $i < count($parts); $i++)
        {
            if (!strstr($parts[$i],"."))
            {
                echo("<a href=\"");
                for ($j = 0; $j <= $i; $j++) 
                {
                    echo $parts[$j]."/";
                };
                echo("\">". str_replace('-', ' ', $parts[$i])."</a> » ");
            }
        };
    };  
?>

但是它只显示主页-〉步骤3〉步骤4,它不显示步骤2和步骤3。实际上我想要多级面包屑。

3j86kqsm

3j86kqsm1#

我推荐使用内置在CBreadcrumbs类中的Yii。
此外,您的if语句中存在逻辑错误,只有在没有其他项目的情况下,才会显示Home。
if移到echo起始位置之后:

echo("home");

if (count($parts) > 2)
{
...
uklbhaso

uklbhaso2#

<?php

# Rewritten Ajmal PraveeN

    $path = parse_url($_SERVER['HTTP_REFERER'],PHP_URL_PATH);
    $parts = explode('/',$path);
    $stepname='Step'.$step->step_code;
    if (count($parts) < 2)
    {
        echo("home");
    }
    else
    {
        for ($i = 0; $i < count($parts); $i++)
        {
            if (!strstr($parts[$i],"."))
            {
                echo("<a href=\"");
                for ($j = 0; $j <= $i; $j++) 
                {
                    echo $parts[$j]."/";
                };
                echo("\">". str_replace('-', ' ', $parts[$i])."</a> » ");
            }
        }
    }
?>

上面的代码可以很好地处理斜杠目录,例如:如果php分解出的路径是/home/website/public或Infinite路径级别,脚本会生成你要找的内容;)我所做的更改是将$i = 2更改为$i = 0,并建议对»使用CSS样式,而不是str_replace
谢谢您的评分

相关问题