2013-08-22 2 views
4

Я пытаюсь настроить фасад для настраиваемого класса в laravel-4. Однако, когда я пытаюсь загрузить свой веб-сайт, я получаю сообщение об ошибке, которое считываетПроблема с фасадным и прокси-провайдером в Laravel-4

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 
} 

Я тогда создал фасад называется ResizerFacade.php, сохраняется в той же папке, и это выглядит следующим образом:

<?php 

namespace PlaneSaleing\Facades; 

use Illuminate\Support\Facades\Facade; 

class Resizer extends Facade { 

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

} 

В-третьих, я создал 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 (...) в laravel/config/app.php файле

'PlaneSaleing\ResizerServiceProvider', 

Любая помощь, высоко ценится

+1

Вы добавили 'app/library' для автозагрузки classmaps, на composer.json? Если да, то после этого вы создали композицию dump-autoload? – rmobis

+0

ах нет - я сделал это сейчас. Однако у меня есть новая ошибка: 'Class 'PlaneSaleing \ AliasLoader' not found'. Есть идеи? –

ответ

4

Вам нужно добавить приложение/библиотеку к пути автозагрузки композитора, а затем восстановить автозагрузчик с помощью кустарного автомата.

Вторая ошибка, которую вы получаете (класс «PlaneSaleing \ AliasLoader» не найден), потому что класс ResizerServiceProvider находится в пространстве имен PlaneSaleing, и этот класс пытается вызвать AliasLoader, который не находится в том же пространстве имен.

Вам просто нужно добавить \ перед AliasLoader, чтобы указать, что он находится в основном пространстве имен вместо текущего пространства имен.