如何添加一个“活动”类通过检查当前函数名


How to add a class of "active" by checking current function name

我正在尝试添加一个CSS类"active"的列表项,通过检查用户是在哪个功能上,我使用codeigniter来构建一个CMS,并使用类名和函数来浏览网站

    class Main extends CI_Controller {
        public function index(){    
            // Get all Articles
            $data['title'] = 'Latest Articles';
            $data['main_content'] = 'main';
            $this->load->view('layouts/main', $data);
        }
        public function article($slug) {
            // Get Article details
            $data['article'] = $this->Games_model->get_game_details($slug);
            $data['title'] = $data['article']->title;
            $data['main_content'] = 'article';
            $this->load->view('layouts/main', $data);
        }
}

我使用这个代码来创建一个类的主要,以便用户可以访问我的网站与此url "localhost/cms/main""localhost/cms/"我想通过检查我们在哪个函数上添加一个类

例如

如果我们在"localhost/cms/"上,我想添加一个类到home链接否则我想添加一个类到文章或任何函数我在

希望你明白我想说的话

有什么帮助吗?

可以使用uri段和路由

在routes.php

$route['main'] = 'main/index';
$route['article'] = 'main/article';

<a <?php echo ($this->uri->segment(1)=='main') ? 'class="active"':''; ?> href="<?php echo base_url('main'); ?>">Main</a>
<a <?php echo ($this->uri->segment(1)=='article') ? 'class="active"':''; ?> href="<?php echo base_url('article'); ?>">Articles</a>

要了解更多细节,请查看文档,对于路由,请点击这里,对于uri段,请点击这里

获取Codeigniter中类的名称

$this->router->fetch_class();

获取Codeigniter

中方法的名称
$this->router->fetch_method();

如果我理解正确,您已经在$data['main_content']中设置了活动页面,您应该能够在视图中执行以下操作(您的导航链接,或任何您想要的地方):

<a <?php echo $main_content=='main'?' class="active"':''?> href="your_main_url">Main</a>
<a <?php echo $main_content=='article'?' class="active"':''?> href="your_articles_url">Articles</a>

这基本上检查$data['main_content']变量你已经设置并传递给视图在你的控制器,并打印class="active"的活动页面。

正如Hearner已经评论的那样,您可以使用$data数组来添加可以发送到模板的额外数据。在您的情况下,您也可以使用$data['main_content']项来指定当前页面。

以这样的方式构建你的模板,菜单也是一个单独的模板,否则你需要在每个页面模板上为当前的活动页面做检查。

给大家举个例子:

// your navigation template file
<ul class="nav">
    <li <?php echo ($main_content === 'main' ? 'class="active"' : '') ?>><a href="..">Main</a></li>
    <li <?php echo ($main_content === 'article' ? 'class="active"' : '') ?>><a href="..">Acticles</a></li>
</ul>