在CodeIgniter视图中检查当前URI段的最佳方法是什么?我想要做的是使用当前的URI段[即$this-> uri-> segment(1)]以突出显示导航栏上的当前页面.
我想到的最好的事情就是去做
$data['current_uri'] = $this->uri->segment(1); $this->load->view('header',$data);
在我的每个控制器中,然后在header.PHP文件中,我检查$current_uri变量以确定应该突出显示导航的哪个部分.如你所知,这是一种非常繁琐的方式,但我却失去了一种更好的方法.
甚至可以扩展默认的Controller类来传递当前的URI段,但我不确定这是否可行,甚至不知道如何去做.
我自己使用类似于anchor()的额外函数.我称之为active_anchor(),它采用所有相同的参数加上另一个(uri).如果传递的uri字符串与active_anchor()url参数匹配,则函数会将类添加为“active”.
然后函数使用锚函数返回(函数所做的就是确定链接是否需要类’active’.
编辑:
我把这段代码放在一个名为’MY_url_helper.PHP’的文件中.这样,当url helper被加载时(我实际上是自动加载那个,因为我的几乎所有视图都使用它.)这只是一些快速代码,非常确定它会起作用.基本上它使用与anchor()函数相同的参数,但也使用$key变量.如果key和url匹配,它会向anchor标记添加一个“active”类.
<?PHP if ( ! defined('BASEPATH')) exit('No direct script access allowed'); if ( ! function_exists('active_anchor')) { function active_anchor($url = NULL,$title = NULL,$key = NULL,$params = array()) { if ($url && $key) { if($key == $url) { if (array_key_exists ('class',$params)) { $params['class'] .= ' active'; } else { $params['class'] = 'active'; } } } return anchor($url,$title,$params); } }