2012-02-28 9 views
1

current_url()がリンクのhref と等価であるかどうかを確認する方法を知っていますか? JavaScriptを使用していますか?そうすることで、hrefが同じ場合は、class="active"をリンクに追加します。Codeigniter:current_url()== hrefの場合、リンクするクラスを追加

編集:心に来る最初の事は、それぞれを比較することforeachを使用して、すべてのhref値の配列を作っているが、多分あなたはこれよりも良い方法がありますか? ニック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>'; 
    } 
} 
+0

リンクの生成にはどのような方法がありますか?ビュー?テンプレート? – Joseph

+0

私はビューを使用しています。 – enchance

答えて

1

次のような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

編集:私はそれをテストし、それが今でも動作するはずですので、私の答えを更新しましたOK。

+0

これは完全に動作します。家に帰る途中、私はすでにアンカー()を自分自身に伸ばしたいと思っていましたが、あなたが私にそれを打つように見えます。私がしたのは、スペースを節約するために三項演算子を使ってコードを短縮したことでした。すべての人が簡単に見ることができるように、上にコードを投稿します。 – enchance

関連する問題