Laravel'de Faker için bir özel sağlayıcı oluşturmak istiyorum (örneğin rasgele bir bina adı için bir tane).Laravel'de kendi Faker sağlayıcınız nasıl uygulanır
Özel sağlayıcıyı uygulamamda nerede saklıyorum ve nasıl kullanırım?
Laravel'de Faker için bir özel sağlayıcı oluşturmak istiyorum (örneğin rasgele bir bina adı için bir tane).Laravel'de kendi Faker sağlayıcınız nasıl uygulanır
Özel sağlayıcıyı uygulamamda nerede saklıyorum ve nasıl kullanırım?
Sen özel bir sağlayıcı oluşturmak için php artisan
kullanmalıdır ... komut satırında
, uygulamanızda ve türüne köküne gidin ...
php artisan make:provider FakerServiceProvider
yeni sağlayıcı oluşturması gerekir,
app/Providers
klasöründe. İşte kayıt işlevim, faker belgelerindeki örneklerden çıkmak gibi görünüyor.
/**
* 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;
});
}
Burada anonim bir sınıf kullanıyorum. Php < 7 varsa, yeni sağlayıcınızın sınıfı ile yeni bir dosya oluşturmanız ve bunu iletmeniz gerekir. Bu yeni sağlayıcısını app/config.php
numaralı providers
dizininize eklediğinizden emin olun. Şimdi kayıtlı olduğu
, size https://laravel.com/docs/5.2/facades de docs geçmesi halinde ayrıca bir Faker
cephe oldukça yapmak gerekir, Ayrıca ... Aşağıdaki kullanarak
$faker = app('Faker');
echo $faker->title;
yeni faker sınıfını yakala kolayca. Tüm ağır kaldırma işlemleri tamamlandığında, sadece yeni cephe sınıfını oluşturmak zorundasınız,'Faker'
'a sahip olmanız ve app/config.php
'daki facades
dizinize eklemeniz gerekir.
Sonra sadece ... şöyle
echo Faker::title;
kullanabilirsiniz vardı '$ fabrikada> define (App \ Kullanıcı :: sınıf, fonksiyon (Faker \ Jeneratör $ numaracı) {...' fabrikalarda bu yüzden bağlayıcı adını "Faker \ Generator" olarak değiştirdim. –
@ x-yuri Yaptığınız şey hakkında daha kesin olabilir misiniz? Projem için benzer bir gereksinim var –
@ rap-2-h Muhtemelen kastediyorum, cevabın içindeki kod “Faker” sınıfına ('$ this-> app-> singleton'a ('Faker' ...') bağlanır. Fakat 'Faker \ Generator' veritabanında bulunduğundan beri/fabrikalar ', muhtemelen' Faker \ Generator 'için ekstra biçimlendiriciler kullanmak zorunda kaldım (bu durumda 'title'. –