如何在我的Laravel 5应用程序中使用Illuminate \ Support \ Str :: slug?

时间:2015-03-26 14:26:13

标签: php laravel 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);
    });
}

当我在修补程序中运行它时,我收到以下错误:

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

6 个答案:

答案 0 :(得分:30)

我认为你不需要在这里创建别名,所以只需添加

即可
use Illuminate\Support\Str;

到你的模特。

答案 1 :(得分:10)

在Laravel 5中,您可以直接使用str_slug($text)。您不再需要使用Facade。

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

答案 2 :(得分:1)

在laravel版本5.4中,写一下

Str::slug()

答案 3 :(得分:1)

在laravel 5中更简单,你可以使用这个全局函数:

str_slug($tag->name);

答案 4 :(得分:0)

你可以通过\ Str :: slug()调用它; 你不必注册一个别名来使它工作,Str类不是一个外观,而是一个真正的静态类

答案 5 :(得分:0)

我遇到了完全相同的问题。将行添加到app\config\app.php文件中的别名是解决此问题的正确方法。

'alias' => [
     ...
     'Str' => Illuminate\Support\Str::class,
     ...
],

通过这种方式可以避免:

  1. 需要在刀片文件中添加use Illuminate\Support\Str;
  2. 需要充分提高班级素质,即\Illuminate\Support\Str::slug($tag->name)

实际上,您可以看到Otwell先生在Laravel 5.8中包括了这一行。

我不确定为什么这对您不起作用。您的Laravel可能已过时。确保已升级到5.8,然后运行composer update