Laravel 5扩展核心类

5

我正在尝试扩展Laravel 5核心类。我的目标是能够拥有自定义的 URL 生成器,例如 URL::test() 将会生成自定义链接。

目前为止,我已经做了以下工作:

  1. Created app/Acme/lib folder
  2. Added app/Acme/lib path to composer.json classmap

    "autoload": {
        "classmap": [
            ....
            app/Acme/lib
         ]
    }
    
  3. Created custom UrlGenerator class in Acme/lib/CustomUrlGenerator.php

    <?php namespace App\Acme\lib;
    use \Illuminate\Routing\UrlGenerator;
    class CustomUrlGenerator extends UrlGenerator {
        public function test() {
           return $this->to('/test');
        }
    }
    
  4. Created service provider app/Acme/lib/CustomUrlServiceProvider.php

    <?php namespace App\Acme\lib;
    use \Illuminate\Routing\RoutingServiceProvider;
    class CustomUrlServiceProvider extends RoutingServiceProvider {
        public function boot() {
            App::bind('url', function() {
                return new CustomUrlGenerator(
                    App::make('router')->getRoutes(),
                    App::make('request')
                );
            });
            parent::boot();
        }
    }
    
  5. Registered service provider in app/config/app.php

  6. Run composer dump-autoload
现在当我运行{!! URL::test() !!}时,每个路由都会返回404错误。
Sorry, the page you are looking for could not be found.
NotFoundHttpException in /vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php line 143:

我有什么遗漏的吗? 非常感谢任何帮助..

1个回答

0

你提到了 RouteCollection.php 文件中的一个错误,但是你没有在问题中包含它。此外,在 composer.json 中我会这样写:

"autoload": {
"classmap": [
        // ....
        "App\\Your_Namespace\\" : "app/Acme/lib",
    ]
}

是的,我已经修复了(非常感谢)+ 根据这个答案 https://dev59.com/fXrZa4cB1Zd3GeqPyiG4#20520861 修复了自定义服务提供程序,现在它可以正常工作了。 - SirInfant
很高兴能够帮助。 - w3spi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接