2016-07-07 13 views

Odpowiedz

9

Należy użyć php artisan wygenerować dostawcy niestandardowego ...

W wierszu polecenia przejdź do katalogu głównego aplikacji i rodzaju ...

php artisan make:provider FakerServiceProvider 

To powinno wygenerować nowy provider w folderze app/Providers. Oto, jak wygląda moja funkcja rejestru, wychodząc z przykładu w dokumentacji fakera.

/** 
* Register the application services. 
* 
* @return void 
*/ 
public function register() 
{ 
    $this->app->singleton('Faker', function($app) { 
     $faker = \Faker\Factory::create(); 
     $newClass = new class($faker) extends \Faker\Provider\Base { 
      public function title($nbWords = 5) 
      { 
       $sentence = $this->generator->sentence($nbWords); 
       return substr($sentence, 0, strlen($sentence) - 1); 
      } 
     }; 

     $faker->addProvider($newClass); 
     return $faker; 
    }); 
} 

Używam tutaj anonimowej klasy. Jeśli masz php < 7, prawdopodobnie będziesz musiał utworzyć nowy plik z nową klasą dostawcy i przekazać to. Upewnij się, że dodajesz nowego dostawcę do swojej macierzy providers w app/config.php.

Teraz to zarejestrowany, można pobrać nową klasę faker używając następujących ...

$faker = app('Faker'); 
echo $faker->title; 

Dodatkowo, jeśli przejść przez docs w https://laravel.com/docs/5.2/facades powinien również być w stanie dokonać Faker fasadę dość z łatwością. Wszystkie ciężkie uniesienia są wykonywane, musisz tylko utworzyć nową klasę fasadową, mieć getFacadeAccessor return 'Faker' i dodać ją do swojej tablicy facades w app/config.php.

Następnie można po prostu używać go tak jak ...

echo Faker::title; 
+0

miałem '$ fabrycznie> define (App \ User :: klasa, function (Faker \ Generator $ faker) {...' w fabrykach, więc zmieniłem nazwę wiążącą na "Faker \ Generator" –

+0

@ x-yuri Czy mógłbyś być bardziej precyzyjny odnośnie tego, co zrobiłeś? Mam podobne wymagania do mojego projektu –

+0

@ rap-2-h Z tego co mogę rozumiem, prawdopodobnie miałem na myśli, że kod w odpowiedzi wiąże się z klasą "Faker" ('$ this-> app-> singleton (" Faker "...), ale ponieważ miałem' Faker \ Generator' w 'bazie danych/factory', prawdopodobnie zobowiązałem się do 'Faker \ Generator', aby użyć dodatkowych formaterów (" title "w tym przypadku) –