我正在中执行以下操作
public function boot(DispatcherContract $events)
{
parent::boot($events);
// set Tag slug
Tag::saving(function($tag)
{
//slugify name
$tag->slug = Str::slug($tag->name);
});
}
当我在修补程序中运行它时,我会得到以下错误:
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-elegantlyhttp://laravel.com/api/5.0/Illuminate/Support/Str.html
我认为您不需要在这里创建别名,所以只需添加
use Illuminate'Support'Str;
到您的模型。
编辑:正如samiles所指出的,str_slug($text)
已在Laravel 6.0中删除。
在Laravel 5中,您可以直接使用str_slug($text)
。你再也不用使用立面了。
http://laravel.com/docs/5.1/helpers#method-str段塞
我遇到了完全相同的问题。将行添加到app'config'app.php
文件中的别名是解决此问题的正确方法。
'alias' => [
...
'Str' => Illuminate'Support'Str::class,
...
],
这样做可以避免:
- 需要在刀片文件中添加
use Illuminate'Support'Str;
行 - 需要对类进行充分的质量控制,即
'Illuminate'Support'Str::slug($tag->name)
事实上,你可以看到Otwell先生在Laravel 5.8中包含了这句话。
我不知道为什么这对你不起作用。可能是你的Laravel已经过时了。确保已升级到5.8,然后运行composer update
。
您可以通过''Str::slug()调用它;您不必注册别名即可使其工作,Str类不是facade,而是一个真正的静态类
在laravel 5.4版本中,像一样编写
Str::slug()
在laravel 5中更简单,您可以使用以下助手:
Laravel 5.8之前(不推荐使用此版本):
str_slug($tag->name);
Laravel 5.4之后:
Str::slug($tag->name)