小编Tyl*_*non的帖子

Laravel 6-7 如何覆盖/更改供应商类?

我最近遇到了一个问题,我需要更改 Laravel 的供应商文件之一以获得所需的结果。该文件是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;
}
Run Code Online (Sandbox Code Playgroud)

更具体地说,这部分:rtrim($parts[0], '/'). 为了使我的部分路线正常工作,需要删除最后的 / 。

我尝试在里面创建我自己的自定义类:App\Helpers\CompiledRouteCollection.php. 我在其中复制上面列出的函数并进行自己的更改。

应用\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;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我进入 App\Providers\AppServiceProvider …

php laravel composer-php laravel-6 laravel-7

11
推荐指数
2
解决办法
2万
查看次数

标签 统计

composer-php ×1

laravel ×1

laravel-6 ×1

laravel-7 ×1

php ×1