ti-enxame.com

Truncar seqüência de caracteres em Laravel modelos de lâmina

Existe um modificador truncado para os modelos blade no Laravel, bem parecido com o Smarty?

Eu sei que eu poderia apenas escrever o php real no template, mas eu estou procurando por algo um pouco mais agradável para escrever (não vamos entrar no todo PHP é um debate de mecanismo de templates).

Então, por exemplo, eu estou procurando algo como:

{{ $myVariable|truncate:"10":"..." }}

Eu sei que eu poderia usar algo como Twig via composer mas eu estou esperando por uma funcionalidade embutida em Laravel em si.

Caso contrário, é possível criar seus próprios modificadores reutilizáveis, como o Smarty fornece. Eu gosto do fato de que Blade não exagera com toda a sintaxe, mas acho que truncate é uma função muito útil de se ter.

Eu estou usando Laravel 4.

58
fl3x7

Em Laravel 4 & 5, você pode usar str_limit, que limita o número de caracteres em uma string.

{{ str_limit($string, $limit = 150, $end = '...') }}

Para mais Laravel funções auxiliares http://laravel.com/docs/helpers#strings

143
Anil Singh

O Laravel 4 tem Str::limit, que truncará o número exato de caracteres, e também Str::words, que truncará no limite do Word.

Confira:

37
Dustin Graham

Edit: Esta resposta foi publicada durante o Laravel 4 beta, quando a classe Str não existia. Existe agora uma maneira melhor de fazer isso emLaravel 4 - que é a resposta de Dustin abaixo. Eu não posso excluir esta resposta devido a SO regras (não me deixa)

Blade em si não tem essa funcionalidade.

Em Laravel 3 havia a classe Str - o que você poderia fazer:

{{ Str::limit($myVariable, 10) }}

Nesta fase eu não acredito que a classe Str esteja em Laravel 4 - mas aqui está uma porta dela que você pode incluir no compositor para adicionar ao seu próprio projeto

28
Laurence

Você pode definir o namespace como:

{!! \Illuminate\Support\Str::words($item->description, 10,'....')  !!}
5
Raman Bhasker

Para manter seu código DRY, e se o seu conteúdo vier do seu modelo, você deve adotar uma abordagem um pouco diferente. Edite seu modelo assim (testado em L5.8):

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;

class Comment extends Model
{
    public function getShortDescriptionAttribute()
    {
        return Str::words($this->description, 10, '...');
    }
}
?>

Então, na sua opinião:

{{ $comment->short_description }}
3
Guillaume Pommier

Isso funciona no Laravel 5:

{!!strlen($post->content) > 200 ? substr($post->content,0,200) : $post->content!!}
1
Ofor Emma

Você pode definir o limite de strings como abaixo:

<td>{{str_limit($biodata ->description, $limit = 20, $end = '...')}}</td>

Ele exibirá somente as 20 letras, incluindo os espaços em branco, e terminará com ....

Exemplo de imagem It shows the example of string limit

0
Ganesh Khadka