CodeIgniter - 如何在菜单的部分视图页面中动态选择菜单项?

时间:2015-05-11 07:31:41

标签: php html codeigniter partial-views

基本上,我有一个菜单,它可以作为导航到我的应用程序中包含这些页面标题的不同页面。此菜单创建为部分视图。我有一个名为'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'的单个控制器的方法,从我的代码中可以理解'menu_view.php'

CodeIgniter - 2.2.0,PHP - 5.3.0

1 个答案:

答案 0 :(得分:1)

每个列表项都需要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,以及它是否与字符串匹配。

我也注意到你正在使用&#34; base_url()&#34;对于你的链接,它会让你的生活更容易使用&#34; site_url()&#34;它添加了index.php本身。

希望这有帮助。