我有一个从数据库动态生成的菜单。 现在我想突出显示菜单项中的当前页面,但是当我这样做时,我所有当前的菜单项突然消失。不明白为什么?
使用$this->uri->segment(1)
时注意到我的菜单消失了
有谁知道如何使它有效?
在我的视图文件中:
<div id="menu">
<ul>
<?php foreach ($tabMenu as $item) : ?>
<?php echo buildListItem($item); ?>
<?php endforeach; ?>
</ul>
</div>
在我的帮手中:
function buildListItem($item) {
$urlItemName = url_title($item->name, 'dash', TRUE);
$urlCatID = ($item->cat_id);
$url = base_url() . $urlItemName. "/". $urlCatID;
// item name is blog, add target into it
if ($urlItemName == 'blog') {
$blog = "http://www.tumblr.com";
return "<li><a href='" . $blog . "' target='_blank'>" . strtoupper($item->name) . "</a></li>";
} else {
return "<li class='". isSelected($item). "'><a href='" . $url . "'>" . strtoupper($item->name) . "</a></li>";
}
}
function isSelected($item) {
$urlItemName = url_title($item->name, 'dash', TRUE);
if ($this->uri->segment(1) === $urlItemName) {
return 'menu_active';
} else {
return '';
}
}
答案 0 :(得分:0)
问题出在您的isSelected()
方法中。当您只返回class='menu_active'
时,您将返回menu_active
。
在buildListItem()
方法中,您将返回带有<li>
属性的class
代码。然后,在isSelected()
方法中,您将再次返回class
属性。所以我想<li>
最终看起来像这样:
<li class='class='menu_active''><a href='{url}'>{name}</a></li>
请注意class
内的class
。