লারাভেল ব্লেড টেম্পলেটগুলিতে স্ট্রিং কেটে দিন


93

লারাভেলের ব্লেড টেম্পলেটগুলির জন্য কি স্মার্টের মতো বেশ কিছু সংশোধনকারী আছে?

আমি জানি যে আমি কেবলমাত্র টেমপ্লেটটিতে প্রকৃত পিএইচপি লিখতে পারছিলাম তবে আমি কিছুটা ভাল লেখার জন্য সন্ধান করছি (আসুন পুরো পিএইচপি তে intoোকা না দেওয়া একটি ইঞ্জিনের বিতর্ক)।

সুতরাং উদাহরণস্বরূপ আমি এমন কিছু সন্ধান করছি:

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

আমি জানি আমি সুরকারের মাধ্যমে টুইগের মতো কিছু ব্যবহার করতে পারি তবে আমি লারাভেলে নিজেই কার্যকারিতার জন্য আশা করছি।

যদি তা না হয় তবে স্মার্টের সরবরাহ মতো আপনার নিজের পুনরায় ব্যবহারযোগ্য পরিবর্তনকারী তৈরি করা সম্ভব। আমি এই সত্যটি পছন্দ করি যে ব্লেড সমস্ত সিনট্যাক্সের সাথে অতিমাত্রায় ওঠে না তবে আমি মনে করি কাটা কাটা একটি বাস্তব কার্যকারিতা।

আমি লারাভেল 4 ব্যবহার করছি।


লারাভেল 5 সম্পর্কে কী?
হোস বুধ বুধবার

4
@HosMercury জন্য L5 দেখতে stackoverflow.com/questions/29281013/...
fl3x7

উত্তর:


199

লারাভেল 4 এবং 5 (5.7 অবধি) এ আপনি ব্যবহার করতে পারেন str_limit যা কোনও স্ট্রিংয়ের অক্ষরের সংখ্যা সীমিত করে।

লারাভেল ৫.৮ অবধি থাকাকালীন আপনি 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)পরিবর্তে আপনাকে অবশ্যই ব্যবহার করতে হবে
হাসান আজিমি

4
str_limit অবচয় করা হয়েছে
ওমর

39

লারাভেল ৪-এ রয়েছে Str::limitযা অক্ষরের সঠিক সংখ্যায় Str::wordsকেটে যাবে এবং শব্দ সীমানায় কেটে যাবে।

চেক আউট:


আপনি কি জানেন যে Str::wordsলার্ভেল 5.2 এর সমান পরিমাণ রয়েছে?
জিদারা

4
না দেখে মনে হচ্ছে এটি এখন শব্দের সংখ্যাকে সীমাবদ্ধ করে, অক্ষর নয়। github.com/laravel/framework/blob/5.2/src/Illuminate/Support/…
ডাস্টিন গ্রাহাম

এটাই আমি খুঁজছিলাম! ধন্যবাদ !
জিদারা

32

সম্পাদনা করুন: এই উত্তরটি লারাভেল 4 বিটার সময় পোস্ট করা হয়েছিল, যখন স্টার ক্লাসের অস্তিত্ব ছিল না। লারাভেল 4 এ এটি করার আরও ভাল উপায় রয়েছে - যা নীচে ডাস্টিনের উত্তর। এসও নিয়মের কারণে আমি এই উত্তরটি মুছতে পারি না (এটি আমাকে দেয় না)

ব্লেড নিজেই যে কার্যকারিতা নেই।

লারাভেল 3-এ স্ট্রেন ক্লাস ছিল - যা আপনি করতে পারেন:

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

এই পর্যায়ে আমি বিশ্বাস করি না যে সেন্ট্রাল ক্লাসটি লারাভেল 4 এ রয়েছে - তবে এখানে এটির একটি বন্দর রয়েছে যা আপনি নিজের প্রকল্পে যুক্ত করতে সুরকারকে অন্তর্ভুক্ত করতে পারেন


পরামর্শ দেওয়ার জন্য ধন্যবাদ, মনে হচ্ছে আমাকে
গুদামে

আজকাল লারাভেল 4-এ স্ট্রেন ক্লাস রয়েছে। ডাস্টিন গ্রাহামের প্রতিক্রিয়া দেখুন।
trm42

হা ঐটা ঠিক. আমি যখন প্রাথমিকভাবে এই উত্তরটি পোস্ট করেছি তখন এটি ছিল লারাভেল 4 বিটার সময়, যখন শ্রেনী শ্রেণীর অস্তিত্ব ছিল না
লরেন্স

মূল উত্তর কোথায়? এটি এখন 4.1 এর জন্য কোনও ডক্স খুঁজে পাওয়া অসম্ভব ... :(
শ্রেনেকিজ

15

জন্য Laravel 7. * আপডেট : সাবলীল স্ট্রিংস অর্থাত আরো অনর্গল, স্ট্রিং মান সঙ্গে কাজ, একসঙ্গে ঐতিহ্যগত স্ট্রিং অপারেশন তুলনায় একটি আরো ভালো পঠনযোগ্য সিনট্যাক্স ব্যবহার শৃঙ্খল একাধিক স্ট্রিং অপারেশন করার জন্য আপনাকে অনুমোদন করার জন্য অবজেক্ট ওরিয়েন্টেড ইন্টারফেস।

সীমা উদাহরণ:

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

লারাভেল 5.8 আপডেট

এটি স্ট্রিং থেকে অক্ষর পরিচালনা করার জন্য :

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

আউটপুট

Lorem ipsu ... 

এটি স্ট্রিং থেকে শব্দগুলি পরিচালনা করার জন্য :

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

আউটপুট

Lorem ipsum ... 

লারাভেল হেল্পারদের স্ট্রিং পরিচালনা করার জন্য সর্বশেষ সহায়কের ডকুমেন্টেশন এখানে


4
খুব পরিষ্কার সমাধান। আমার জন্য কাজ। সেরা উত্তর আইএমও
ম্যাক্সিমাস 1127

@ maximus1127 শেখার দিকে আপনার প্রচেষ্টার জন্য আপনাকে অনেক ধন্যবাদ, আমি আনন্দিত যে আমি আপনার পক্ষে দরকারী হতে পারি।
ভাইপারটেকপ্রো

4
দুর্দান্ত! ভাল মত উত্তর আমি আরও দেখতে চাই।

লোরেম ইপসামের ডুলারের মতো আপনার স্ট্রিং থাকলে কী হবে এটি সঠিক ফলাফলটি দেবে?
ঋষি

@ Iষি হ্যাঁ এটি সঠিক ফলাফলটি ফিরিয়ে দেবে, বিটিডব্লিউ আপনি কোন পদ্ধতির সীমা সম্পর্কে কথা বলছেন? বা শব্দ?
ভাইপারটেকপ্রো


5

আপনার কোড ডিআরওয়াই রাখতে, এবং যদি আপনার সামগ্রীটি আপনার মডেল থেকে আসে তবে আপনার উচিত কিছুটা ভিন্ন পদ্ধতির অবলম্বন। আপনার মডেলটি তেমন সম্পাদনা করুন (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

এটি লারাভেল 5 এ কাজ করে:

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

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

ল্যারাভেল 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

লারাভেল 4 এবং 5 (5.7 অবধি) এ, আপনি স্ট্রিম্লিমেট ব্যবহার করতে পারেন যা একটি স্ট্রিংয়ের অক্ষরের সংখ্যা সীমিত করে।

লারাভেল 7-এ থাকাকালীন আপনি Str :: সীমা সাহায্যকারী ব্যবহার করতে পারেন।

//For Laravel  to Laravel 7

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

লারাভেল,, কেবলমাত্র {{স্ট্রেন :: সীমা ($ চামাদো-> উপ-ক্লায়েন্ট-> নাম, 10) ব্যবহার করুন}
মেলো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.