2

この投稿の最後のコメントとして、次のように述べています。

これはどのサービス プロバイダでも簡単に実行できます (メソッド ベースの DI を使用できるため、ブートは最適な場所です)。

public function boot(\Illuminate\Contracts\Http\Kernel $kernel) {
 $kernel->appendMiddleware('Sheepy85\L5Localization\Middleware\Localization'); // prependMiddleware works too.
}

これは、サービス プロバイダーからミドルウェアを注入するための Laravel コードです。

Lumen Frameworkから同じことを達成しようとしています。コードは次のとおりです。

<?php namespace Acme\Slz\Providers;

use Illuminate\Contracts\Http\Kernel;
use Illuminate\Support\ServiceProvider;

class SlzServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     * @param Kernel $kernel
     * @return void
     */
    public function boot(Kernel $kernel)
    {
        // push the serializer middleware to the stack
        $kernel->pushMiddleware(Acme\Slz\Middleware\Serializer::class);
    }

    /**
     * Register any application services.
     * This service provider is a great spot to register your various container
     * bindings with the application. As you can see, we are registering our
     * @return void
     */
    public function register()
    {
    }
}

しかし、これにより次のエラーが発生します。

lumen.ERROR: exception 'ErrorException' with message 'Argument 1 passed to Acme\Slz\Providers\SlzServiceProvider::boot() must be an instance of Illuminate\Contracts\Http\Kernel, none given

Lumen を使用して依存関係コンテナーを有効にするために、他に行うべきことはありますか?

4

1 に答える 1

0

これはどう:

<?php namespace Acme\Slz\Providers;

use Illuminate\Support\ServiceProvider;

class SlzServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        // push the serializer middleware to the stack
        $this->app->middleware([
            'serializer' => 'Acme\Slz\Middleware\Serializer',
        ]);
    }
}
于 2015-06-17T09:41:48.027 に答える