我使用自动CodeIgniter 2.1 + Auto Crumb助手,我得到from here
例如,我编辑联系人页面的链接是http://localhost/caster/contact/edit_contact/13/213bcf
13 是联系人ID, 213bcf 是加密联系人 ID,以防止用户仅更改网址中的联系人ID。< / p>
所以我的面包屑现在显示无效的网址,如上图所示。所需的面包屑为Contact \ Edit Contact
。如何修复或阻止此问题?
感谢。
答案 0 :(得分:1)
目前有一个错误(或者可能是它的设计,但它似乎很愚蠢)与autocrumb帮助器,这意味着正则表达式模式替换不会运行,除非特定细分中包含连字符(-
)或下划线(_
)。
通常使用配置变量$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
下方,基本上表示网址是否以numbers/letter-number-pattern
结尾,然后从包面条中删除网址的最后两个网段。
它不太理想,但错误需要先修复。显然,这假设您的网址结构不会发生变化。您可以在if
中添加其他条件,以确保它只出现在您想要的页面上。