Laravel路由导航链接全部显示为active状态的问题求助
Laravel路由导航链接全部显示为active状态的问题求助
嘿,我来帮你分析下为啥所有链接都变成active状态啦!
你现在用的是strpos(Route::currentRouteName(), 'dashboard') == 0来判断是否给li加上active类,问题出在PHP的**松散比较(==)**上:
- 当当前路由名确实以
dashboard开头时,strpos会返回0(匹配的起始位置),这时候0 == 0是true,没问题; - 但当当前路由名里根本没有
dashboard这个字符串时,strpos会返回false,而在松散比较中,false == 0也是true!这就导致不管当前路由是什么,这个条件都会成立,所有li都被加上了active类。
给你两个解决办法:
方法一:改用严格比较(===)
严格比较会同时检查值和类型,只有当strpos确实返回0时才会成立,代码修改成这样:<li class="{{ (strpos(Route::currentRouteName(), 'dashboard') === 0) ? 'active' : '' }}">方法二:用Laravel自带的
Route::is()方法
这个方法更简洁直观,专门用来匹配路由名,支持通配符*,写法如下:<li class="{{ Route::is('dashboard*') ? 'active' : '' }}">这样只要路由名以
dashboard开头,就会匹配成功,自动加上active类,而且不用手动处理字符串匹配的坑~
备注:内容来源于stack exchange,提问作者Raxmatullo Erkinov
相关产品推荐
相关产品推荐

