Smarty와 매우 유사한 Laravel의 블레이드 템플릿에 대한 자르기 수정자가 있습니까?
나는 템플릿에 실제 PHP를 작성할 수 있다는 것을 알고 있지만 작성하기에 조금 더 좋은 것을 찾고 있습니다 (전체 PHP는 템플릿 엔진 논쟁입니다).
예를 들어 다음과 같은 것을 찾고 있습니다.
{{ $myVariable|truncate:"10":"..." }}
작곡가를 통해 Twig와 같은 것을 사용할 수 있다는 것을 알고 있지만 Laravel 자체에 내장 된 기능을 기대하고 있습니다.
그렇지 않다면 Smarty가 제공하는 것과 같은 재사용 가능한 수정자를 직접 만들 수 있습니다. Blade가 모든 구문을 과도하게 사용하지 않는다는 사실이 마음에 들지만 자르기는 정말 편리한 기능이라고 생각합니다.
저는 Laravel 4를 사용하고 있습니다.
답변
Laravel 4 & 5 (최대 5.7)에서는 str_limit
문자열의 문자 수를 제한 하는를 사용할 수 있습니다 .
Laravel 5.8 이상에서는 Str::limit
도우미를 사용할 수 있습니다 .
//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
답변
Laravel 4에는 Str::limit
정확한 문자 수로 Str::words
잘리고 단어 경계 에서도 잘립니다.
확인 :
답변
편집 :이 답변은 Str 클래스가 존재하지 않았을 때 Laravel 4 베타 동안 게시되었습니다. 이제 Laravel 4에서 더 나은 방법이 있습니다-아래 Dustin의 대답입니다. SO 규칙으로 인해이 답변을 삭제할 수 없습니다 (나를 허용하지 않습니다)
블레이드 자체에는 이러한 기능이 없습니다.
Laravel 3에는 Str 클래스가있었습니다.
{{ Str::limit($myVariable, 10) }}
이 단계에서는 Str 클래스가 Laravel 4에 있다고 생각하지 않습니다. 하지만 여기에 자신의 프로젝트에 추가하기 위해 작곡가 에 포함 할 수있는 포트가 있습니다.
답변
Laravel 7. * 업데이트 : Fluent Strings 즉, 문자열 값 작업을위한보다 유창하고 객체 지향적 인 인터페이스로, 기존 문자열 작업에 비해 더 읽기 쉬운 구문을 사용하여 여러 문자열 작업을 함께 연결할 수 있습니다.
제한 예 :
$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20);
산출
The quick brown fox...
단어 예 :
$string = Str::of('Perfectly balanced, as all things should be.')->words(3, ' >>>');
산출
Perfectly balanced, as >>>
Laravel 6. * 업데이트 : 모든 laravel 도우미를 작동하려면이 패키지가 필요합니다.
composer require laravel/helpers
컨트롤러에서 도우미를 사용하려면 클래스도 포함 / 사용하는 것을 잊지 마십시오.
use Illuminate\Support\Str;
Laravel 5.8 업데이트
이것은 문자열의 문자 를 처리하기위한 것입니다 .
{!! Str::limit('Lorem ipsum dolor', 10, ' ...') !!}
산출
Lorem ipsu ...
이것은 문자열에서 단어 를 처리하기위한 것입니다 .
{!! Str::words('Lorem ipsum dolor', 2, ' ...') !!}
산출
Lorem ipsum ...
다음은 문자열 Laravel Helpers 를 처리하기위한 최신 도우미 문서입니다.
답변
다음과 같이 네임 스페이스를 설정할 수 있습니다.
{!! \Illuminate\Support\Str::words($item->description, 10,'....') !!}
답변
코드를 건조하게 유지하고 콘텐츠가 모델에서 제공되는 경우 약간 다른 접근 방식을 채택해야합니다. 다음과 같이 모델을 편집합니다 (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 }}
답변
이것은 Laravel 5에서 작동합니다.
{!!strlen($post->content) > 200 ? substr($post->content,0,200) : $post->content!!}