Je fais ce qui suit dans le
public function boot(DispatcherContract $events)
{
parent::boot($events);
// set Tag slug
Tag::saving(function($tag)
{
//slugify name
$tag->slug = Str::slug($tag->name);
});
}
Quand je le lance en bricoleur, j'obtiens l'erreur suivante:
PHP Fatal error: Class 'App\Providers\Str' not found in /var/www/questions-l5/app/Providers/EventServiceProvider.php on line 35
..mais je ne connais pas le moyen Laravel de l'importer. Dois-je simplement utiliser use
, j'ai essayé d'ajouter ce qui suit au fichier config/app.php:
'aliases' => [
...
'Str' => 'Illuminate\Support\Str',
.. n'a pas semblé faire beaucoup de différence cependant.
http://chrishayes.ca/blog/code/laravel-4-generating-unique-slugs-elegantlyhttp://laravel.com/api/5.0/Illuminate/Support/Str. html
Je ne pense pas que vous ayez besoin de créer un alias ici, alors ajoutez simplement
use Illuminate\Support\Str;
à votre modèle.
Dans Laravel 5, vous pouvez utiliser directement str_slug($text)
. Vous n'avez plus besoin d'utiliser la façade.
Dans laravel 5, c'est plus simple, vous pouvez utiliser cette fonction globale:
str_slug($tag->name);
Dans la version 5.4 de laravel, écrivez comme
Str::slug()
vous pouvez l'appeler par\Str :: slug (); vous n'avez pas besoin d'enregistrer un alias pour que cela fonctionne, la classe Str n'est pas une façade, mais une vraie classe statique