2009-12-22 10 views

Respuesta

13

que realmente debería estar utilizando la clase CodeIgniter URI para hacer esto en lugar de los $ _SERVER [ 'REQUEST_URI']

$ this-> uri-> uri_string()


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

^^ esa es la forma preferida de hacer las cosas debido a algunas complejidades que pueden ocurrir con las funciones de enrutamiento codeigniter

+0

Sí, terminé usando este método. –

+1

Tuve que usar following para que funcione if ($ this-> uri-> uri_string() == 'home') // Eliminar la barra diagonal – Sahil

6

depende de lo que estés de generar el enlace HTML.

Si está utilizando el módulo URL Helper, a continuación, puede llamar a la función anchor() para crear sus enlaces, y pasarlo una serie de atributos como el tercer parámetro, es decir:

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

Si eres simplemente sacando el HTML manualmente en sus plantillas/vistas, obviamente puede simplemente crear el atributo de clase usted mismo en el HTML.

6

Si usted tiene una gran cantidad de elementos de navegación que puede hacerlo de esta manera (muy simplificado) ...

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

Vas a tener que editarlo para sus necesidades ...

Si no tienes tantos elementos de navegación, es más fácil dar a cada página una identificación corporal y luego usar css para activarla.

<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

Eso es increíble. ¡La primera opción funcionó (con un pequeño ajuste)! –

+0

La primera opción también me funcionó a mí también !!! Gracias ... :) – enam

4

Puede hacerlo de esta manera creando helper con el siguiente

<?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' : ''; 
    } 
} 

luego aplicarlo en vista del menú

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

Esta pregunta tiene 4 años y tu respuesta no agrega beneficio para el hilo ... –

+1

este es el bloque de código más simple que he encontrado hasta ahora ..Gracias :) –

+0

@FahidMohammad Sí, esta es la razón por la que respondí aquí aunque esta pregunta es muy antigua. – Robin

1

Para añadir clase activa (class =”activa”) a un enlace, lo he hecho al hacer esto:
En vista

<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> 

En controlador

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

Quizás no sea su solución. Pero funciona para mí.

Cuestiones relacionadas