0

我使用从这里获得的 auto CodeIgniter 2.1 + Auto Crumb helper

截屏

例如,我编辑联系页面的链接是http://localhost/caster/contact/edit_contact/13/213bcf

13是联系人 id,213bcf加密的联系人id,以防止用户仅从 url 更改联系人 id。

所以我的面包屑现在显示无效的网址,如上图所示。所需的面包屑是Contact \ Edit Contact. 如何解决或防止此问题?

谢谢。

4

1 回答 1

1

目前,autocrumb 助手存在一个错误(或者可能是设计使然,但这样做似乎很愚蠢),这意味着除非特定段中有连字符 ( -) 或下划线 ( _),否则不会运行正则表达式模式替换它。

通常在这里使用 config 变量$config['strip_regexp']就足以满足您的要求,但唉,在这种情况下并非如此。

在这种情况下(假设 URL 末尾没有更多参数),您可以执行以下操作:

$ci = get_instance();
if( preg_match( '#\d+/[a-z0-9]+$#i', $ci->uri->uri_string() ) ) {
    $config['exclude_segment'] = $config['exclude_segment'] + array(
        $total = $ci->uri->total_segments(),
        $total-1
    );
}

这应该插入到文件的正下方$config['exclude_segment'] = array();,该app/config/breadcrumb.php文件基本上说如果 URL 以numbers/letter-number-pattern然后从面包屑中删除 URL 的最后两个部分。

它不太理想,但需要先修复该错误。显然,这是假设您的 URL 结构不会改变。您可以在 中添加其他条件,if以确保它仅出现在您想要的页面上。

于 2012-06-25T09:44:21.603 回答