लारवेल ब्लेड टेम्प्लेट में ट्रंककेट स्ट्रिंग


93

क्या लारवेल में ब्लेड टेम्पलेट्स के लिए एक ट्रेंकेट संशोधक है, बहुत स्मार्ट की तरह?

मुझे पता है कि मैं सिर्फ टेम्पलेट में वास्तविक php लिख सकता हूं, लेकिन मैं लिखने के लिए कुछ अच्छे की तलाश कर रहा हूं (चलो पूरे PHP में नहीं जाना एक अस्थायी इंजन बहस है)।

इसलिए उदाहरण के लिए मैं कुछ ढूंढ रहा हूँ:

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

मुझे पता है कि मैं संगीतकार के माध्यम से ट्विग की तरह कुछ का उपयोग कर सकता हूं, लेकिन मैं लारवेल में ही कार्यक्षमता के लिए उम्मीद कर रहा हूं।

यदि यह संभव नहीं है तो स्मार्टी जैसे अपने पुन: प्रयोज्य संशोधक बनाना संभव है। मैं इस तथ्य को पसंद करता हूं कि ब्लेड सभी सिंटैक्स के साथ ओवरकिल नहीं करता है, लेकिन मुझे लगता है कि ट्रंकेट एक वास्तविक काम करना है।

मैं Laravel 4 का उपयोग कर रहा हूं।


लार्वा 5 के बारे में क्या?
होज मर्करी

1
@ HosMercury L5 के लिए stackoverflow.com/questions/29281013/…
fl3x7

जवाबों:


199

लारवेल 4 और 5 (5.7 तक) में, आप उपयोग कर सकते हैं str_limit, जो एक स्ट्रिंग में वर्णों की संख्या को सीमित करता है।

जबकि लारवेल 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='...') }}

अधिक लारवल सहायक कार्यों के लिए http://laravel.com/docs/helpers#strings


उपयोग के मामले में सही उत्तर ब्लेड दृश्य में है।
फ्रिसबेटेरियन

10
संस्करण में 5.8 strसहायकों को हटा दिया गया जो आपको Illuminate\Support\Str::limit($string)इसके स्थान पर उपयोग करना चाहिए
हसन आज़िमी

1
str_limit को पदावनत कर दिया जाता है
Omer

39

लारवेल 4 में Str::limitसटीक वर्णों की संख्या Str::wordsकम होगी , और यह भी शब्द सीमा पर छंटनी होगी।

चेक आउट:


क्या आपको पता है कि Str::wordsलार्वा 5.2 में मौजूद है?
जिदारा

1
नहीं, ऐसा लगता है कि यह अब शब्दों की संख्या को सीमित करता है, पात्रों को नहीं। github.com/laravel/framework/blob/5.2/src/Illuminate/Support/…
डस्टिन ग्राहम

यही तो मैं ढूंढ रहा था! धन्यवाद !
जिदारा

32

संपादित करें: यह उत्तर लारावेल 4 बीटा के दौरान पोस्ट किया गया था, जब Str वर्ग मौजूद नहीं था। लारवेल 4 में इसे करने का एक बेहतर तरीका है - नीचे डस्टिन का जवाब है। मैं एसओ नियमों के कारण इस उत्तर को नहीं हटा सकता (यह मुझे नहीं चाहिए)

ब्लेड में खुद की कार्यक्षमता नहीं है।

Laravel 3 में Str क्लास थी - जो आप कर सकते थे:

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

इस स्तर पर मुझे विश्वास नहीं होता है कि स्ट्रै क्लास लारवेल 4 में है - लेकिन यहां इसका एक हिस्सा है जिसे आप अपने स्वयं के प्रोजेक्ट में जोड़ने के लिए संगीतकार में शामिल कर सकते हैं


सुझाव के लिए धन्यवाद, मुझे लगता है कि मुझे गुफा में जाना होगा और
मीडो

आजकल Laravel 4 में Str क्लास है। देखें डस्टिन ग्राहम की प्रतिक्रिया।
trm42

हां यह सही है। जब मैंने मूल रूप से इस उत्तर को पोस्ट किया था, यह लारवेल 4 बीटा के दौरान था, जब शीर्ष वर्ग मौजूद नहीं था
लॉरेंस

ओरिजनल उत्तर कहां है? 4.1 के लिए किसी भी डॉक्स को ढूंढना असंभव है। अब :(
Srneczek

16

के लिए Laravel 7. * अद्यतन : Fluent स्ट्रिंग्स यानी एक और अधिक धाराप्रवाह, स्ट्रिंग मूल्यों के साथ काम कर रहे हैं, एक साथ परंपरागत स्ट्रिंग आपरेशन की तुलना में एक अधिक पठनीय सिंटैक्स का उपयोग श्रृंखला एकाधिक स्ट्रिंग आपरेशन करने के लिए आप की अनुमति के लिए वस्तु उन्मुख इंटरफ़ेस।

सीमा उदाहरण:

$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 >>>

लारवेल 6. के लिए अद्यतन। * : आपको सभी लारवल सहायकों को काम करने के लिए इस पैकेज की आवश्यकता हैcomposer require laravel/helpers

नियंत्रक में सहायक का उपयोग करने के लिए, साथ ही साथ कक्षा का उपयोग / शामिल करना न भूलें

use Illuminate\Support\Str;

लारवेल 5.8 अपडेट

यह स्ट्रिंग से वर्णों को संभालने के लिए है :

{!! Str::limit('Lorem ipsum dolor', 10, ' ...') !!}

उत्पादन

Lorem ipsu ... 

यह स्ट्रिंग से शब्दों को संभालने के लिए है :

{!! Str::words('Lorem ipsum dolor', 2, ' ...') !!}

उत्पादन

Lorem ipsum ... 

यहां स्ट्रिंग लारवेल हेल्पर्स को संभालने के लिए नवीनतम सहायक दस्तावेज है


1
बहुत साफ समाधान। मेरे लिए काम किया। सबसे अच्छा जवाब IMO
अधिकतम

@ maximus1127 सीखने की दिशा में आपके प्रयासों के लिए बहुत-बहुत धन्यवाद, मुझे खुशी है कि मैं आपके लिए उपयोगी हो सकता हूं।
विप्रचेतप्रो

1
महान! जवाब की तरह मैं और अधिक देखने के लिए प्यार करता हूँ।
mhrabiee

ऐसा क्या होगा कि आपके पास लोरम इप्सुम के डोरेल जैसे तार होंगे क्या यह सही परिणाम लौटाएगा?
ऋषि

@ ऋषि हाँ यह सही परिणाम लौटाएगा, btw आप किस विधि की सीमा के बारे में बात कर रहे हैं? या शब्द?
विप्रचेतप्रो


5

अपने कोड 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 }}


2

आप उदाहरण के रूप में स्ट्रिंग सीमा निर्धारित कर सकते हैं:

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

यह व्हाट्सएप सहित केवल 20 अक्षरों को प्रदर्शित करेगा और इसके साथ समाप्त होगा ...।

उदाहरण छवियह स्ट्रिंग सीमा का उदाहरण दिखाता है


अरे, भाई, यह आपका जवाब अपडेट है
महदी सफारी

1

इस तरह की सरल चीजों के लिए मैं एक सहायक बनाना पसंद करूंगा - उदाहरण के लिए:

निम्नलिखित सामग्री के साथ helpers.phpअपने में एक फ़ाइल बनाएँ /app/helpers.php:

<?php
if (! function_exists('short_string')) {
    function short_string($str) {
            $rest = substr($str, 0, 10);
            return $rest;
    }
}

helper.phpअपने में ऑटोलॉड रजिस्टर करेंcomposer.json

   "autoload": {
        "files": [
            "app/helpers.php"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ]
    }

उसके बाद आप अपने ब्लेड फ़ाइल में उदाहरण के लिए उपयोग कर सकते हैं:

{{ short_string($whatever_as_text) }}

आप इस सरल फ़ंक्शन का उपयोग कर सकते हैं, फिर, विश्व स्तर पर अपने ऐप में।


0

Laravel 6 अपडेट:

@php
$value = 'Artificial Intelligence';
$var = Str::limit($value, $limit = 15, $end = '');
print_r($var);
@endphp

<p class="card-text">{{ Illuminate\Support\Str::limit($value, 7) }}</p>
<h2 class="main-head">{!! Str::limit($value, 5) !!}</h2>

0

Laravel 4 & 5 (5.7 तक) में, आप str_limit का उपयोग कर सकते हैं, जो एक स्ट्रिंग में वर्णों की संख्या को सीमित करता है।

Laravel 7 अप में रहते हुए, आप Str :: limit helper का उपयोग कर सकते हैं।

//For Laravel  to Laravel 7

{{ Illuminate\Support\Str::limit($post->title, 20, $end='...') }}

Laravel 7, केवल {{Str :: limit ($ chamado-> subClient-> नाम, 10)} का उपयोग करें
João Mello
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.