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

时间:2018-11-25 23:01:34

标签: 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')))) !!}

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

当我在控制器中添加use Illuminate\Support\Str;而不是Blade时,我得到了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类而不是Blade?

1 个答案:

答案 0 :(得分:4)

选中Accessor and Mutator

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

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

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