hiscaler
(Hiscaler)
1
CMenu 确实是一个不错的东东,对于生成菜单来说,减少了很多的工作量。不过还是觉得几点不是很方便。
第一:大多数的菜单都是带样式的。比如用一个图片来分隔不同的菜单项。当然这个图片我们可以设置为背景,但是存在一个问题是,一般最后一个菜单项因为右边不存在其他菜单项了,所以我们要设置背景为 none,是否可以在 CMemu 中为为最开始的一个菜单项和最后一个分别添加一个 first, last 的 css 属性呢,这样的话,我们只要书写对应的 css 就可以了。当然,这个我们可以通过重写相应的方法来达到要求,不过我认为在 CMenu 中添加这样一个属性有点必要。大伙认为呢?
第二:也是我认为重要的一点,就是 css 的 current 属性。比如我有如下菜单项,
array('lable' => 'product', 'url' => array('products/index'))
点我点击 product 菜单项时,因为 url 和 数组中的 url 参数相同,所以有 current 属性,这个没有问题,但是当我点击 product 下的每个产品,对应的 url 为 products/view/id/111 时,应该来说 product 菜单项也是要有 current css 属性的。而现在是点击详细的产品菜单项中的 product 是没有选中的。
hiscaler
(Hiscaler)
2
刚才细想了一下,第二个确实不好处理,如果以 controller 作为判断条件的话,如果一个菜单中有两个相同的 controller ,只是不同的 action 的话,就会不正确了。
dufei22
(Dufei22)
3
今天也碰到这个问题,我是这样子解决的
array('label'=>'管理首页', 'url'=>array('/admin/default/index'),'active'=>$this->id=='default'?true:false),
array('label'=>'文章管理', 'url'=>array('/admin/articles/admin'),'active'=>$this->id=='articles'?true:false),
加了个$this->id来做判断,是当前控制器id则加active,其他就不加,用这个方法还可以根据module或是action来判断。这样子要在哪个层次加active都由自己来控制了
hiscaler
(Hiscaler)
4
恩恩。最近也新发现了这个,呵呵。之前一直没有认真的看代码。呵呵。多谢飞飞。 
hiscaler
(Hiscaler)
5
话说 Yii 其实考虑挺全的。有的东西只是我不知道方法而已。呵呵。
我提出来的第一个问题我认为还是有必要,大伙认为呢?
dufei22
(Dufei22)
6
第一个问题,你可以给itemOptions或linkOptions加class或用CSS的tagname:after来做,看你的具体情况怎么做方便
chang_da
(380438308)
7
cmenu是有些作用 但是我感觉从代码简化的角度上 没简化多少 反而增加了系统负载
hiscaler
(Hiscaler)
8
tagname:after这个没看懂。不知道搞。用了itemoptions来处理我的问题,非常棒。
呵呵