Ответ 1
Я не думаю, что вам нужно создать псевдоним здесь, поэтому просто добавьте
use Illuminate\Support\Str;
к вашей модели.
Я делаю следующее в
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
Я не думаю, что вам нужно создать псевдоним здесь, поэтому просто добавьте
use Illuminate\Support\Str;
к вашей модели.
Редактировать: Как отметили Самилс, str_slug($text)
был удален в Laravel 6.0.
В Laravel 5 вы можете использовать str_slug($text)
напрямую. Вам больше не нужно использовать Фасад.
В laravel 5 проще, вы можете использовать эти помощники:
До Laravel 5.8:
str_slug($tag->name);
После Laravel 5.4:
Str::slug($tag->name)
вы можете называть его \Str:: slug(); вам не нужно регистрировать псевдоним, чтобы он работал, класс Str не является фасадом, а реальным статическим классом
В версии laravel 5.4 напишите как
Str::slug()