CodeIgniter - 如何在菜单的局部视图页面中动态 select 菜单项?

CodeIgniter - How to dynamically select a menu item in a partial view page for menu?

基本上,我有一个菜单,可以导航到我的应用程序中的不同页面,其中包含这些页面的标题。此菜单创建为局部视图。我有一个名为 'partials' 的文件夹,其中我有一个名为 'menu_view.php' 的菜单部分视图页面。这是'menu_view.php'的代码:

<div id="menu" class="box">


    <ul class="box">
        <li id="<?php if(isset($controller_name)) echo 'selected'; ?>"><a href="<?php echo base_url(); ?>index.php/admin_logins"><span>Home</span></a></li>
        <li id="<?php if(isset($controller_name)) echo 'selected'; ?>"><a href="<?php echo base_url(); ?>index.php/admin_logins/meal2"><span>Add Meal</span></a></li>
        <li id="<?php if(isset($controller_name)) echo 'selected'; ?>"><a href="<?php echo base_url(); ?>index.php/admin_logins/designation"><span>Designation</span></a></li>
        <li id="<?php if(isset($controller_name)) echo 'selected'; ?>"><a href="<?php echo base_url(); ?>index.php/admin_logins/employee2"><span>Employee</span></a></li>
        <li id="<?php if(isset($controller_name)) echo 'selected'; ?>"><a href="<?php echo base_url(); ?>index.php/admin_logins/role"><span>Role</span></a></li>
        <li id="<?php if(isset($controller_name)) echo 'selected'; ?>"><a href="<?php echo base_url(); ?>index.php/admin_logins/user"><span>User</span></a></li>
        <li id="<?php if(isset($controller_name)) echo 'selected'; ?>"><a href="<?php echo base_url(); ?>index.php/admin_logins/meal"><span>Meal Information</span></a></li>
        <li id="<?php if(isset($controller_name)) echo 'selected'; ?>"><a href="<?php echo base_url(); ?>index.php/admin_logins/meal_bill_config"><span>Meal Bill Configuration</span></a></li>
        <li id="<?php if(isset($controller_name)) echo 'selected'; ?>"><a href="<?php echo base_url(); ?>index.php/report_meal_lists/index"><span>Reports</span></a></li>
    </ul>

</div>

为了显示选定的某个菜单项,我在相应的控制器方法中添加了一个名为 'controller_name' 的数组索引。例如,要选择 'Designation' 标题,我已将以下内容添加到我的控制器方法中:

function designation() {

        //i've written controller's specific code here. 
        //i'm not showing this as it has no relation with the question

        $data["controller_name"] = 'admin_logins/designation';
        $this->load->view('/admin_logins/designation_view', $data);
}

在查看页面('/admin_logins/designation_view')中,我得到了这个:

 $this->load->view('partials/menu_view', $controller_name);

但是我的菜单项没有被选中。

我做错了什么?

请注意,我的菜单中的名称和大多数其他标题都来自名为 'admin_logins' 的单个控制器的方法,从我的代码中可以理解 [=28] =]'menu_view.php'.

CodeIgniter - 2.2.0,PHP - 5.3.0

每个列表项都需要一个 if 语句,如下所示;

<ul class="box">
    <li id="<?php if(isset($controller_name) == 'admin_logins') echo 'selected'; ?>"><a href="<?php echo site_url('admin_logins'); ?>">Home</a></li>
    <li id="<?php if(isset($controller_name) == 'admin_logins/meal2') echo 'selected'; ?>"><a href="<?php echo site_url('admin_logins/meal2'); ?>">Meal</a></li>
    ...
</ul>

因此您要检查是否设置了 $controller_name,以及它是否与字符串匹配。

我还注意到您正在使用 "base_url()" 作为您的链接,使用 "site_url()" 会让您的生活更轻松,因为它添加了 index.php 本身。

希望对您有所帮助。