如何在循环中停止侧边栏导航中活动的类


How to stop class of active in sidebar navigation in loop

我已经编码了一个侧边栏导航,并在<li>中为brand类添加了循环。已从数据库中提取!

下面是边栏导航的代码。

问题是<li class='active'>已经启用了所有的li。我只想启用以激活打开的网站页面。如何使用循环分解李?

<div class="col-sm-2">
    <nav class="nav-sidebar">
        <ul class="nav">
            <li><a href="<?php echo(BASE_URL); ?>index.php">Home</a></li>
            <?php
            try {
                $brands = Brand::get_brands();
                foreach ($brands as $b) {
                    echo("<li class='active'><a href='" . BASE_URL . "products/products.php?brandID=$b->brandID'>$b->brand_name</a></li>");
                }
            } catch (Exception $ex) {
                echo("<li>" . $ex->getMessage() . "</li>");
            }
            ?> 
            <li class="nav-divider"></li>
            <li><a href="<?php echo(BASE_URL); ?>login.php"><i class="glyphicon glyphicon-off"></i> Sign in</a></li>
        </ul>
    </nav>
</div>

边栏屏幕截图图片:边栏导航屏幕截图

根据您创建的链接,我假设您的URL看起来像yoursite.com/products/products.php?brandID=150。您可以通过调用$_GET['brandID']来使用URL中的brandID。

因此,我们检查它是否已设置,并将该值与循环中的brandID进行比较。

<div class="col-sm-2">
    <nav class="nav-sidebar">
        <ul class="nav">
            <li><a href="<?php echo(BASE_URL); ?>index.php">Home</a></li>
            <?php
            try {
                $brands = Brand::get_brands();
                foreach ($brands as $b) {
                    // adding this line:
                    $class = ( isset($_GET['brandID']) and $_GET['brandID'] == $b->brandID) ? ' class="active"' : '';
                    echo("<li".$class."><a href='" . BASE_URL . "products/products.php?brandID=$b->brandID'>$b->brand_name</a></li>");
                }
            } catch (Exception $ex) {
                echo("<li>" . $ex->getMessage() . "</li>");
            }
            ?> 
            <li class="nav-divider"></li>
            <li><a href="<?php echo(BASE_URL); ?>login.php"><i class="glyphicon glyphicon-off"></i> Sign in</a></li>
        </ul>
    </nav>
</div>