web-dev-qa-db-ja.com

Laravelブレードテンプレートの文字列を切り捨てます

Laravelのブレードテンプレートには、Smartyによく似た切り捨て修飾子がありますか?

テンプレートで実際のphpを書き出すことができることは知っていますが、もう少し書きやすいものを探しています(PHPはテンプレートエンジンの議論全体ではありません)。

たとえば、次のようなものを探しています:

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

私はTwig経由でcomposerのようなものを使用できることを知っていますが、Laravel自体に組み込まれた機能を期待しています。

そうでない場合は、Smartyが提供するような独自の再利用可能な修飾子を作成できます。 Bladeがすべての構文で過剰にならないという事実は好きですが、truncateは本当に便利な機能だと思います。

Laravelを使用しています4。

66
fl3x7

Laravel 4および5では、str_limitを使用できます。これは、文字列の文字数を制限します。

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

Laravelヘルパー関数の詳細 http://laravel.com/docs/helpers#strings

154
Anil Singh

Laravel 4には、正確な文字数に切り捨てられるStr::limitと、Wordの境界で切り捨てられるStr::wordsがあります。

チェックアウト:

37
Dustin Graham

編集:この回答は、Strクラスが存在しなかったLaravel 4ベータ中に投稿されました。 Laravel 4でそれを行うためのより良い方法があります-これは以下のダスティンの答えです。 SOルールが原因でこの回答を削除できません(許可されません)

ブレード自体にはその機能がありません。

Laravel 3にはStrクラスがありました-あなたはそれを行うことができました:

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

この段階では、StrクラスがLaravel 4にあるとは思わない- しかし、ここに作曲家に含めることができるポートがある あなた自身のプロジェクトに追加する

29
Laurence

次のように名前空間を設定できます。

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

コードを乾燥した状態に保ち、コンテンツがモデルからのものである場合は、少し異なるアプローチを採用する必要があります。モデルを次のように編集します(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, '...');
    }
}
?>

次に、あなたの意見で:

{{ $comment->short_description }}
4

Laravel 5.8アップデート

{!! Str::limit('Lorem ipsum dolor sit amet, consectetur adipisicing elit', 10, ' ...') !!}

出力

Lorem ipsu ... 
3
Vipertecpro

以下の例のように文字列制限を設定できます。

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

空白を含む20文字のみが表示され、...で終わります。

サンプル画像 It shows the example of string limit

1
Ganesh Khadka

これはLaravel 5で機能します:

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