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

ech*_*cho 4 php laravel laravel-5 laravel-5.7

我正在使用Laravel 5.7,并想知道在从数据库中提取并输出到Blade / view的描述中,限制单词而不是字符的正确方法是什么。

我目前正在通过在我的Blade文件中添加以下内容来进行此工作(注意,Str类在Blade /视图中):

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

上面将我的段落限制为25个单词,但是我意识到我应该在我的Controller中而不是Blade中使用Str类。

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

控制者

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

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

Joe*_*Joe 5

检查访问器和变量

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

然后可以在刀片模板或控制器上使用它。

@foreach($testimonials as $testimonial)
{{ $testimonial->testimonial_excerpt }}
@endforeach
Run Code Online (Sandbox Code Playgroud)