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

咨询:视图中使用的Route::currentRouteNameStartWith()在控制器中何处调用?

问题解决思路

首先明确:Laravel原生根本没有Route::currentRouteNameStartWith()这个方法,所以你找不到它的定义是正常的。下面给你两种直接能用的解决办法:

方法一:用原生方法直接替代

不用自定义任何东西,直接修改视图代码,用Str::startsWith配合Route::currentRouteName()实现相同逻辑:

<li class="{{ Str::startsWith(Route::currentRouteName(), 'overview') ? 'mm-active': ''}}">
    <a href="{{ route('overview')}}">@lang('Overview')</a>
</li>

要是调用Str时报错,要么在视图顶部加@use Illuminate\Support\Str,要么直接写完整命名空间\Illuminate\Support\Str::startsWith()。

方法二:自定义Route宏(适合需要复用的场景)

如果你就想保留currentRouteNameStartWith这种写法,去App\Providers\RouteServiceProvider的boot方法里添加一段宏定义:

use Illuminate\Support\Facades\Route;
use Illuminate\Support\Str;

public function boot()
{
    parent::boot();

    Route::macro('currentRouteNameStartWith', function ($prefix) {
        $currentRoute = Route::currentRouteName();
        return $currentRoute && Str::startsWith($currentRoute, $prefix);
    });
}

写完之后,原来视图里的代码就能正常使用了。

额外排查点

如果之前这个方法确实能正常运行,那大概率是之前的开发者自定义了宏或者扩展了Route类,你可以去App\Providers目录下的服务提供者文件,或者项目里的自定义扩展文件里找找看。

内容的提问来源于stack exchange,提问作者Miracle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:55:32