Laravel 7 agrega un nuevo método a la clase "Illuminate\Support\Str".
Supongamos que tenemos un modelo "Post" y al mostrar todos los posts en una vista tipo "index" o lista de posts, y en vez de mostrar todo el texto, queremos mostrar únicamente un extracto del texto, en Laravel podemos hacer esto de varias formas.
Creando un Accessor:
use Illuminate\Support\Str; class Post { const EXCERPT_LENGTH = 100; protected $fillable = [ ..., 'body' ] protected $appends = ['excerpt']; public function getExcerptAttribute() { return Str::limit($this->body, Post::EXCERPT_LENGTH) } } So now in your blade files you can use this method:
Ahora podrás usar el accessor en tus vistas y en cualquier parte de tu codigo donde uses el modelo post.
<h1>{{ $post->title }}</h1> <p>{{ $post->excerpt() }}</p> Tambien puedes usar una directiva blade especifica para esto, podemos crear un provider para directivas blade:
php artisan make:provider BladeServiceProvider Agregamos la logica para crear una directiva blade en el método "boot".
/** * Bootstrap services. * * @return void */ public function boot() { Blade::directive('excerpt', function ($text) { return "<?php echo Str::limit($text, 100); ?>"; }); } Y en tus vistas puedes usar la directiva así:
<p>@excerpt($post->body)</p> Espero que te sea de utilidad, saludos!
Top comments (0)