PHP + 代码点火器 : Bootstrap nav-link active for sub directory

标签 php html css twitter-bootstrap codeigniter

这里是 Bootstrap 的新手。我已经尝试了几个小时了。也许我缺少一些简单的东西。

基本上,我试图在子目录中浏览时保持导航链接处于事件状态。

当我点击“帐户”(site.com/accounts) 时,它正确地将 nav-link 标记为 active

Accounts 是一个帐户列表。

当我单击列表中的其中一个帐户时,我们应该转到该帐户 (site.com/accounts/0000734174),但侧边栏中的帐户导航链接不再处于事件状态。

如何在保持 href“/accounts”的同时保持它处于事件状态,因为在我看来它应该是。有成千上万的帐户,我们不希望每个帐户都有一个下拉子导航链接。

我是不是理解错了?请帮忙。 谢谢

编辑: 让我补充一下,这是通过代码点火器路由的:

$route[ 'accounts/(:num)' ] = "accounts_details";
$route[ 'accounts' ] = "accounts_list";

然后让我添加我尝试过的内容。在 SO 上找到不同的 Jquery 片段,不同的 CSS 失败,不同的路由想法。 这也是在使用 CodeIgniter 框架的 CoreUI 模板中。

更多详情: HTML-

<div class="sidebar">
    <nav class="sidebar-nav">
        <ul class="nav">
            <li class="nav-title">Navigation</li>
            <li class="nav-item">
                <a class="nav-link" href="<?php echo base_url(); ?>accounts">
                <i class="nav-icon icon-folder-alt"></i> Accounts</a>
            </li>
        </ul>
    </nav>
</div>

CSS-

.sidebar .nav-link.active {
  color: #fff;
  background: #3a4248;
}

最佳答案

更新1

是的,你走错了路。这绝对不是 Bootstrap 问题。

但是您关于使用一个 Controller 而不是两个 Controller 的评论是一个很好的答案。如果它有效,那很好。但是,我们不知道 CodeIgniter 如何将导航链接设置为事件状态,所以我认为这是了解 CodeIgniter 和模型- View - Controller 架构的好机会。

我不了解 CodeIgniter,但查看他们的文档,我猜你是 including the sidebar as a partial

在您的 View 页面(可能是 application/views/accounts_detailsapplication/views/accounts_list )或您的 Controller 中,您必须对 sidebar View 进行某种调用。

您要做的是在您的 Controller 和 make that available to your views 中设置一个 PHP 变量:

$data = array('active' => 'active');
$this->load->view('main_view', $data);

然后在您的边栏代码中,检查该变量。

<div class="sidebar">
    <nav class="sidebar-nav">
        <ul class="nav">
            <li class="nav-title">Navigation</li>
            <li class="nav-item">
                <a class="nav-link <?php echo $active; ?>" href="<?php echo base_url(); ?>accounts">
                <i class="nav-icon icon-folder-alt"></i> Accounts</a>
            </li>
        </ul>
    </nav>
</div>

我不了解 CodeIgniter,但我认为是 this tutorial will help

原帖

这不是 Bootstrap 问题。

Bootstrap 正在为任何具有适当类或 DOM 结构的东西设置样式:

<ul class="nav">
  <li class="nav-item">
    <a class="nav-link active" href="#">Active</a> <---- the 'active' class makes it pretty
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled" href="#">Disabled</a>
  </li>
</ul>

但是,作为 Bootstrap even points out ,它们不以任何特殊方式处理 .active 的样式:

"The base .nav component does not include any .active state. The following examples include the class, mainly to demonstrate that this particular class does not trigger any special styling."

无论您使用何种语言编写此代码,您都需要确保在路由包含“/accounts”时将正确的类添加到正确的元素。

这可以在 Javascript 中完成,使用 window.location 判断 URL 是否包含“/accounts/”,然后使用 .addClass() 将类 active 添加到该标记。

但是,如果您使用的是 Angular、React、Vue 等,则可能有更好的方法在该语言框架内执行此操作。

但是,在没有看到您的 HTML 的情况下,我只是猜测 CoreUI 在类上使用 .active 以这种方式设置您的代码样式。

用更多代码(HTML、CSS、JS)和语言更新您的问题,我很乐意在此处添加一些细节。

关于PHP + 代码点火器 : Bootstrap nav-link active for sub directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59003318/

相关文章:

php - 根据 IP 地址处理在线用户 - mysql 数据库

php - 如何更新重复条目中的单行

php - 从已知位置查找最近的列出(数组?)城市

html - 无序列表的li后等间距

css - 我怎样才能让我的线性渐变工作?

php - 将数据中创建的 Magento 客户帐户更改为网站

javascript - 获取具有特定 CSS 类的 HTML 文档中的所有元素

javascript - Google 时间轴图表 - 将无持续时间的事件更改为圆圈

css - 带有 TitledPane 的 VBox 的 JavaFX 填充

php - 我如何为由 php 代码生成的奇数行和偶数行使用 Jquery 选择器?