4

laravel-4 でカスタム ビルド クラスの Facade をセットアップしようとしています。ただし、ウェブサイトを読み込もうとすると、次のエラーが表示されます

Class 'PlaneSaleing\ResizerServiceProvider' not found

ここのチュートリアルに従いました: http://fideloper.com/create-facade-laravel-4

私のカスタムクラスが呼び出されResizer.phpて保存されlaravel\app\library\、次のようになります。

<?php

namespace PlaneSaleing;

class Resizer {
    // My custom methods
}

次に、同じフォルダーに保存された という Facade を作成しましたResizerFacade.php。次のようになります。

<?php

namespace PlaneSaleing\Facades;

use Illuminate\Support\Facades\Facade;

class Resizer extends Facade {

    protected static function getFacadeAccessor() { return 'resizer'; }

}

3 番目に、次のようなファイルを作成ResizerServiceProvider.phpして同じフォルダーに保存しました。

<?php

namespace PlaneSaleing;

use Illuminate\Support\ServiceProvider;

class ResizerServiceProvider extends ServiceProvider {

    public function register()
    {
        // Register 'resizer' instance container to our UnderlyingClass object
        $this->app['resizer'] = $this->app->share(function($app)
        {
            return new Resizer;
        });

        // Shortcut so developers don't need to add an Alias in app/config/app.php
        $this->app->booting(function()
        {
            $loader = AliasLoader::getInstance();
            $loader->alias('Resizer', 'PlaneSaleing\Facades\Resizer');
        });
    }
}

最後に、次の行を'providers' => array (...)inlaravel/config/app.phpファイルに追加しました

'PlaneSaleing\ResizerServiceProvider',

どんな助けでも大歓迎です

4

1 に答える 1

4

app/library を composer autoload パスに追加してから、artisan dump-auto で autoloader を再生成する必要があります。

2 番目のエラー (クラス 'PlaneSaleing\AliasLoader' が見つかりません) は、クラス ResizerServiceProvider が PlaneSaleing 名前空間にあり、このクラスが同じ名前空間にない AliasLoader を呼び出そうとするためです。

AliasLoader の前に \ を追加して、現在の名前空間ではなくメインの名前空間にあることを指定するだけです。

于 2013-08-23T08:37:35.057 に答える