vendor/laravel/framework/Illuminate/Routing/CompileRouteCollection.php
。在这个文件中,需要更改一个函数。
protected function requestWithoutTrailingSlash(Request $request)
{
$trimmedRequest = Request::createFromBase($request);
$parts = explode('?', $request->server->get('REQUEST_URI'), 2);
$trimmedRequest->server->set(
'REQUEST_URI', rtrim($parts[0], '/').(isset($parts[1]) ? '?'.$parts[1] : '')
);
return $trimmedRequest;
}
更具体地说,这部分内容是:
rtrim($parts[0], '/')
。末尾的斜杠需要被移除,以便我的路由部分能够正常工作。我尝试创建自己的自定义类放在
App\Helpers\CompiledRouteCollection.php
中。在其中复制上述函数并进行自己的更改。namespace App\Helpers;
use Illuminate\Http\Request;
class CompiledRouteCollection extends \Illuminate\Routing\CompiledRouteCollection
{
protected function requestWithoutTrailingSlash(Request $request)
{
$trimmedRequest = Request::createFromBase($request);
$parts = explode('?', $request->server->get('REQUEST_URI'), 2);
$trimmedRequest->server->set(
'REQUEST_URI', rtrim($parts[0], '').(isset($parts[1]) ? '?'.$parts[1] : '')
);
return $trimmedRequest;
}
}
然后我进入App\Providers\AppServiceProvider,并在register函数内运行以下代码。
public function register()
{
$loader = AliasLoader::getInstance();
$loader->alias('App\Helpers\CompiledRouteCollection', 'Illuminate\Routing\CompiledRouteCollection');
}
但什么也没有发生。
更新1
我把我的别名改成了这个:
$loader = AliasLoader::getInstance();
$loader->alias('Illuminate\Routing\CompiledRouteCollection', 'App\Helpers\CompiledRouteCollection');
但是现在在我的 Helper 类中,当尝试访问任何页面时,它返回以下错误:
Class 'Illuminate\Routing\CompiledRouteCollection' not found
如果有人愿意帮助我,非常感谢。如果您需要更多信息,请告诉我!如果您需要更多上下文,请查看我在 laravel/framework 上开放的问题,其中包含完整的背景说明 here。
CompileRouteCollection::class
,您将永远不会遇到这样的问题。 - Bohdan Petrenko