Подтвердить что ты не робот

Как использовать Illuminate\Support\Str:: slug в моем приложении Laravel 5?

Я делаю следующее в

public function boot(DispatcherContract $events)
{
    parent::boot($events);

    // set Tag slug
    Tag::saving(function($tag)
    {
        //slugify name
        $tag->slug = Str::slug($tag->name);
    });
}

Когда я запускаю его в tinker, я получаю следующую ошибку:

PHP Fatal error:  Class 'App\Providers\Str' not found in /var/www/questions-l5/app/Providers/EventServiceProvider.php on line 35

.. но я не знаю способ Laravel импортировать его. Нужно ли просто использовать use, я попытался добавить в файл config/app.php следующее:

'aliases' => [
...
'Str'      => 'Illuminate\Support\Str',

.., похоже, не имеет особого значения.

http://chrishayes.ca/blog/code/laravel-4-generating-unique-slugs-elegantly http://laravel.com/api/5.0/Illuminate/Support/Str.html

4b9b3361

Ответ 1

Я не думаю, что вам нужно создать псевдоним здесь, поэтому просто добавьте

use Illuminate\Support\Str;

к вашей модели.

Ответ 2

Редактировать: Как отметили Самилс, str_slug($text) был удален в Laravel 6.0.

В Laravel 5 вы можете использовать str_slug($text) напрямую. Вам больше не нужно использовать Фасад.

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

Ответ 3

В laravel 5 проще, вы можете использовать эти помощники:

До Laravel 5.8:

str_slug($tag->name);

После Laravel 5.4:

Str::slug($tag->name)

Ответ 4

вы можете называть его \Str:: slug(); вам не нужно регистрировать псевдоним, чтобы он работал, класс Str не является фасадом, а реальным статическим классом

Ответ 5

В версии laravel 5.4 напишите как

Str::slug()