107

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

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

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

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

コンポーザーを介してTwigのようなものを使用できることは知っていますが、Laravel自体に機能が組み込まれていることを望んでいます。

そうでない場合は、Smarty が提供するような独自の再利用可能な修飾子を作成することは可能です。Blade がすべての構文でやり過ぎないという事実が気に入っていますが、truncate は非常に便利な機能だと思います。

Laravel4を使用しています。

4

14 に答える 14

228

Laravel 4 および 5 (5.7 まで) ではstr_limit、文字列の文字数を制限する を使用できます。

Str::limitLaravel 5.8 以降では、ヘルパーを使用できます。

//For Laravel 4 to Laravel 5.5
{{ str_limit($string, $limit = 150, $end = '...') }}
//For Laravel 5.5 upwards
{{ \Illuminate\Support\Str::limit($string, 150, $end='...') }}

その他の Laravel ヘルパー関数についてはhttp://laravel.com/docs/helpers#strings

于 2014-07-23T05:41:42.107 に答える
41

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

チェックアウト:

于 2013-08-28T17:24:46.997 に答える
35

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

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

Laravel 3にはStrクラスがありました-これはあなたができることです:

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

この段階では、StrクラスがLaravel 4にあるとは思いませんが、これをコンポーザーに含めて独自のプロジェクトに追加できるポートを次に示します。

于 2013-02-22T06:26:18.100 に答える
9

コードを DRY に保つには、コンテンツがモデルに由来する場合は、少し異なるアプローチを採用する必要があります。モデルを次のように編集します (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 }}
于 2019-04-19T13:59:39.293 に答える
2

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

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

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

サンプル画像文字列制限の例を示します

于 2019-02-26T06:40:54.597 に答える