Codeigniter:如果current_url()== href,则添加一个类来链接

wnrlj8wa  于 8个月前  发布在  其他
关注(0)|答案(2)|浏览(48)

你知道一种方法如何检查current_url()是否等同于一个链接的href * 而不使用JavaScript?在这样做时,如果href相同,则将class="active"添加到链接中。

**编辑:**首先想到的是制作一个所有href值的数组,然后使用foreach来比较每个值,但也许你有比这更好的方法?

q1qsirdb

q1qsirdb1#

你可以像这样扩展URL助手中的锚函数。

if ( ! function_exists('anchor'))
{
    function anchor($uri = '', $title = '', $attributes = '', $apply_active = FALSE)
    {
        $title = (string) $title;

        if ( ! is_array($uri))
        {
            $site_url = ( ! preg_match('!^\w+://! i', $uri)) ? site_url($uri) : $uri;
        }
        else
        {
            $site_url = site_url($uri);
        }

        if ($title == '')
        {
            $title = $site_url;
        }

        if ($attributes != '')
        {
            $attributes = _parse_attributes($attributes);
        }

        if ( $uri == uri_string() AND $apply_active )
        {
            $active = ' class="'.$apply_active.'"';
        }
        else $active = NULL;

        return '<a href="'.$site_url.'"'.$attributes.$active.'>'.$title.'</a>';
    }
}

我还没有测试过这个,所以检查一下bug。像这样调用锚函数:

anchor('my_page', 'My Page', '', 'active');

有关如何扩展helper的信息,请参阅文档:http://ellislab.com/codeigniter/user_guide/general/helpers.html

**编辑:**好的,我已经测试了它,并更新了我的答案,所以它现在应该工作得很好。

dauxcl2d

dauxcl2d2#

  • (代表问题作者发布解决方案,将其从问题移至答案空间)*。

感谢Nick Pyett

if(!function_exists('anchor')){
    function anchor($uri = '', $title = '', $attributes = '', $apply_active = FALSE){       
        if(!is_array($uri)){
            $site_url = (!preg_match('!^\w+://! i', $uri)) ? site_url($uri) : $uri;
        }
        else {
            $site_url = site_url($uri);
        }
        
        $title = (bool)$title ? $title : $site_url;
        if($attributes != '') $attributes = _parse_attributes($attributes);
        $active = $uri == uri_string() && $apply_active ? ' class="'.$apply_active.'"' : NULL;
        
        return '<a href="'.$site_url.'"'.$attributes.$active.'>'.$title.'</a>';
    }
}

相关问题