You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 12:04:30