限制单词而不是 Laravel 中的字符

Limit Words not Characters in Laravel

我正在使用 Laravel 5.7 并且想知道在我从数据库中提取并输出到 [=28] 的描述中限制单词数量而不是字符数量的正确方法是什么=].

我目前通过在我的 Blade 文件中添加以下内容来实现此目的(注意 class Str 在 Blade/view 中):

@php use Illuminate\Support\Str; @endphp
{!! (nl2br(e(Str::words($test->testimonial, '25')))) !!}

以上将我的段落限制为 25 个字,但我意识到我应该在我的控制器中使用 Str class,而不是 Blade。

当我在我的控制器而不是 Blade 中添加 use Illuminate\Support\Str; 时,我得到了缺少 Str 的错误。

控制器

use App\Testimonial;
use Illuminate\Http\Request;
use Illuminate\Support\Str;

...

public function index()
{
    $testimonial = Testimonial::all();
    return view('testimonials.index',compact('testimonial'));
}

如何在控制器中使用 Str class 而不是 Blade?

勾选Accessor and Mutator

class Testimonial extends Model
{
    public function getTestimonialExcerptAttribute()
    {
        return Str::words($this->testimonial, '25');
    }
}

然后您可以在您的 blade 模板或控制器上使用它..

@foreach($testimonials as $testimonial)
{{ $testimonial->testimonial_excerpt }}
@endforeach