【问题标题】:Removing UID from breadcrumbs in CodeIgniter在 CodeIgniter 中从面包屑中删除 UID
【发布时间】:2016-11-11 02:50:21
【问题描述】:

我在 CodeIgniter 上自动制作了面包屑,但在用户配置文件编辑视图中,我的 uuid 显示为 uri->segment。我认为没有 uuid 会看起来更干净。如何跳过、删除或隐藏它?

我的网址

http://localhost/myproject/user/edit/0004055ac42e42bcb57183646e84ff05

带助手的面包屑

首页 > 用户 > 编辑 > 0004055ac42e42bcb57183646e84ff05

我期待

主页 > 用户 > 编辑

助手面包屑:

<?php
if(!function_exists('generateBreadcrumb')){
function generateBreadcrumb(){
  $ci = &get_instance();

  $i=1;
  $uri = $ci->uri->segment($i);
  $link = '
  <ol class="breadcrumb">
     <li><a href="'.site_url().'"><i class="fa fa-home"></i> Home</a></li>';

  while($uri != ''){
    $prep_link = '';
  for($j=1; $j<=$i;$j++){
    $prep_link .= $ci->uri->segment($j).'/';
  }

  if($ci->uri->segment($i+1) == ''){
    $link.='<li class="active"><a href="'.site_url($prep_link).'">';
    $link.=$ci->uri->segment($i).'</a></li> ';
  }else{
    $link.='<li><a href="'.site_url($prep_link).'">';
    $link.=$ci->uri->segment($i).'</a><span class="divider"></span></li> ';
  }

  $i++;
  $uri = $ci->uri->segment($i);
  }
    $link .= '</ol>';
    return $link;
  }
}

?>

【问题讨论】:

  • 为什么你不能使用 $this->router->fetch_class();用于获取您的控制器名称和 $this->router->fetch_method();为您的方法名称生成面包屑

标签: codeigniter


【解决方案1】:

这只会在“用户>编辑”之后发生吗?如果是这样,如何添加一个条件来查找该序列并在找到时忽略该段?

我想对此进行测试,但我没有准备好游乐场。看看这是否适合你:

if ( $i>1 && $ci->uri->segment($i) == 'edit' && $ci->uri->segment($i-1) == 'User' ) {
    //just ignore this
} else {
  if($ci->uri->segment($i+1) == ''){
    $link.='<li class="active"><a href="'.site_url($prep_link).'">';
    $link.=$ci->uri->segment($i).'</a></li> ';
  }else{
    $link.='<li><a href="'.site_url($prep_link).'">';
    $link.=$ci->uri->segment($i).'</a><span class="divider"></span></li> ';
  }
}

另一种解决方案是检查 strlen($ci-&gt;uri-&gt;segment($i)) 是否等于 32。当然,这仅在您希望 uuid 始终为 32 个字符且其他 URI 段不那么长时才有效。

【讨论】:

  • 感谢@zJorge 我使用您的答案,因为使用我以前的助手非常简单。解决了
【解决方案2】:

只有当你想在面包屑中添加你的控制器和方法名称时才可以试试这个。

 $c=$this->router->fetch_class();;
 $m=$this->router->fetch_method();
 $link="";
 $link.='<li><a href="'.site_url().'"><i class="fa fa-home"></i> Home</a></li>';

 if($m!='index')
 {
  $link.='<li><a href="'.site_url($c).'">$c</li>
 <li><a class="active" href="'.site_url($m).'">$m</li>';
 }
 else
 {
 $link.='<li><a class="active" href="'.site_url($c).'">$c</li>';
 }

【讨论】:

  • 感谢@Saravana Dev 的回复,已经尝试编写您提供的脚本,但不像我预期的那样,所以我正在尝试从 zJorge 的答案中进行编辑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
  • 2014-04-16
相关资源
最近更新 更多