web-dev-qa-db-fra.com

Comment utiliser Illuminate\Support\Str :: slug dans mon Laravel 5 app?

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

12
Martyn

Je ne pense pas que vous ayez besoin de créer un alias ici, alors ajoutez simplement

use Illuminate\Support\Str;

à votre modèle.

25
Limon Monte

Dans Laravel 5, vous pouvez utiliser directement str_slug($text). Vous n'avez plus besoin d'utiliser la façade.

http://laravel.com/docs/5.1/helpers#method-str-slug

10
stefanzweifel

Dans laravel 5, c'est plus simple, vous pouvez utiliser cette fonction globale:

str_slug($tag->name);
1
Luca C.

Dans la version 5.4 de laravel, écrivez comme 

Str::slug()
1
stackMonk

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

0
terry low