Codeigniter: добавить класс для ссылки, если current_url () == href - PullRequest
1 голос
/ 28 февраля 2012

Знаете ли вы, как проверить, является ли current_url() эквивалентным href ссылки без с использованием javascript?При этом, если href одинаков, добавьте к ссылке class="active".

Edit: Первое, что приходит на ум, - это создание массива всех значений href, а затем использованиеforeach для сравнения, но, может быть, у вас есть способ получше, чем этот?

Ответ спасибо Нику Пайетту :

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

1 Ответ

1 голос
/ 28 февраля 2012

Вы можете расширить функцию привязки в помощнике 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>';
    }
}

Я не проверял это, поэтому проверьте наличие ошибок.Вызовите функцию привязки следующим образом:

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

См. Документы о том, как расширить помощников: http://ellislab.com/codeigniter/user_guide/general/helpers.html

Редактировать: ОК Я протестировал и обновилмой ответ, так что теперь он должен работать хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...