如何在我的Laravel 5应用程序中使用IlluminateSupportStr::slug


How to use IlluminateSupportStr::slug in my Laravel 5 app?

我正在中执行以下操作

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,
     ...
],

这样做可以避免:

  1. 需要在刀片文件中添加use Illuminate'Support'Str;
  2. 需要对类进行充分的质量控制,即'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)
相关文章:
  • 没有找到相关文章