2009-12-22 30 views

Trả lời

13

Bạn thực sự nên sử dụng các lớp CodeIgniter URI để làm điều này thay vì $ _SERVER [ 'REQUEST_URI']

$ this-> uri-> uri_string()


if ($this->uri->uri_string() == '/contact') 

^^ đó là cách ưa thích để làm việc do một số phức tạp có thể xảy ra với các tính năng định tuyến của mã vạch

+0

Vâng, tôi đã kết thúc bằng cách sử dụng phương pháp này. –

+1

Tôi đã phải sử dụng sau để nó hoạt động nếu ($ this-> uri-> uri_string() == 'home') // Xóa dấu gạch chéo về phía trước – Sahil

6

Phụ thuộc vào cách bạn xuất HTML của liên kết.

Nếu bạn đang sử dụng các mô-đun URL Helper, sau đó bạn có thể gọi anchor() chức năng để tạo ra các liên kết của bạn, và vượt qua nó một loạt các thuộc tính như tham số thứ ba, ví dụ:

$this->load->helper('url'); 
echo anchor('url/path', 'Click here', array('class' => 'active')); 

Nếu bạn chỉ cần xuất HTML theo cách thủ công trong các mẫu/khung nhìn của bạn, rõ ràng là bạn chỉ có thể tự tạo thuộc tính lớp trong HTML.

6

Nếu bạn có rất nhiều các mặt hàng chuyển hướng bạn có thể làm theo cách này (rất đơn giản) ...

<ul> 
<li<?= if ($_SERVER['REQUEST_URI'] == '/contact'): ?> id="active"<?php endif; ?>><a href="">contact</a></li> 
</ul> 

Bạn sẽ phải chỉnh sửa nó cho nhu cầu của bạn ...

Nếu bạn không có nhiều mục nav một cách dễ dàng hơn là cung cấp cho mỗi trang một id nội dung và sau đó sử dụng css để làm cho nó hoạt động.

<style type="text/css"> 
body#contact #contact-nav { font-weight:bold; } 
</style> 

<body id="contact"> 

<ul id="navigation"> 
    <li id="contact-nav"><a href="">contact</a></li> 
</ul> 
+1

Thật tuyệt vời. Tùy chọn đầu tiên hoạt động (với một điều chỉnh nhỏ)! –

+0

Tùy chọn đầu tiên cũng làm việc cho tôi !!! Cảm ơn ... :) – enam

4

Bạn có thể thực hiện theo cách này bằng cách tạo trình trợ giúp theo sau

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
if (! function_exists('active_link')) 
{ 
    function active_link($controller) 
    { 
     $CI =& get_instance(); 

     $class = $CI->router->fetch_class(); 
     return ($class == $controller) ? 'active' : ''; 
    } 
} 

sau đó áp dụng nó trong giao diện menu

<li class="<?php echo active_link('services'); ?>"><a href="<?php echo base_url();?>services">Services</a></li> 
+0

Câu hỏi này là 4 tuổi và câu trả lời của bạn không thêm lợi ích cho các chủ đề ... –

+1

đây là khối mã đơn giản nhất tôi đã đi qua cho đến nay ..Cảm ơn :) –

+0

@FahidMohammad có đây là lý do tại sao tôi trả lời ở đây mặc dù câu hỏi này là rất cũ. – Robin

1

Để thêm lớp tích cực (class =”active”) vào một liên kết, tôi đã thực hiện nó bằng cách làm này:
Theo quan điểm

<ul class="nav nav-tabs"> 
     <li id="button_home" class='<?php echo $home;?>'><?php echo anchor('pages/index','Home');?></li> 
     <li id="button_about" class='<?php echo $about;?>'><?php echo anchor('pages/about','About')?></li> 
</ul> 

Trong điều khiển

$data['home']="active"; 

Có lẽ đó không phải là giải pháp của bạn. Nhưng nó làm việc cho tôi.

Các vấn đề liên quan