Troncare una stringa in Laravel lama modelli

C’è un troncamento di modificatore per la lama modelli in Laravel, praticamente come Smarty?

So che potrei semplicemente scrivere il php nel template, ma sto cercando qualcosa di un po ‘ più bello di scrivere (non lasciamo tutto il PHP è un motore di template dibattito).

Così, per esempio, sto cercando qualcosa di simile:

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

So che potrei usare qualcosa di simile a un Ramoscello di via composer, ma spero per la costruzione di funzionalità in Laravel stesso.

Se non è possibile creare il proprio riutilizzabili modificatori come Smarty offre. Mi piace il fatto che la Lama non eccessivo, con tutte le sintassi, ma penso che il troncamento è una vera e propria funzione utile per avere.

Sto usando Laravel 4.

InformationsquelleAutor fl3x7 | 2013-02-21

 

10 Replies
  1. 163

    In Laravel 4 & 5 (5.7), è possibile utilizzare str_limit, che limita il numero di caratteri in una stringa.

    Mentre in Laravel 5.8-up, è possibile utilizzare il Str::limit helper.

    //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='...') }}

    Per ulteriori Laravel funzioni di supporto http://laravel.com/docs/helpers#strings

    • Risposta corretta dal caso d’uso è in Lama di vista.
    • Nella versione 5.8 str aiutanti ottenuto rimosso, è necessario utilizzare Illuminate\Support\Str::limit($string) invece
    • str_limit è deprecato
  2. 30

    Edit: Questa risposta è stato pubblicato durante il Laravel 4 beta, quando Str classe non esiste. Ora c’è un modo migliore per farlo in Laravel 4 – che è Dustin risposta qui sotto. Non riesco a cancellare questa risposta, date le regole (non mi permette)

    Lama stessa non dispone di tale funzionalità.

    In Laravel 3 c’era la Str di classe che si potrebbe fare:

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

    In questa fase non credo che le Str classe è in Laravel 4 – ma qui è una porta che non si può includere nel compositore per aggiungere al vostro progetto

    • Grazie per il suggerimento, sembra che non sarà necessario grotta e utilizzare il Meido porte lol
    • Oggi Laravel 4, Str classe. Vedere Dustin Graham risposta.
    • Sì – che è corretto. Quando mi originariamente inviato questa risposta fu durante Laravel 4 Beta, quando la Str classe non esiste
    • Dove è il origianl risposta? La sua dannatamente impossibile trovare documentazione per 4,1 ora… 🙁
  3. 6

    È possibile Impostare lo spazio dei nomi come:

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

    Per mantenere il vostro codice di LAVAGGIO, e se il contenuto viene dal tuo modello si dovrebbe adottare un approccio leggermente diverso. Modificare il tuo modello come (testato in 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, '...');
        }
    }
    ?>

    Quindi in vista :

    {{ $comment->short_description }}
  5. 4

    Laravel 5.8 Aggiornamento

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

    Uscita

    Lorem ipsu ... 
  6. 1

    Questo funziona su Laravel 5:

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

    È possibile impostare la stringa di limite come esempio di seguito:

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

    Verrà visualizzato solo il 20 lettere compresi gli spazi bianchi e finisce con ….

    Immagine di esempioTroncare una stringa in Laravel lama modelli

  8. 1

    Per le cose semplici come questo preferirei fare un aiuto, ad esempio:

    creare un helpers.php file nel vostro /app/helpers.php con il seguente contenuto:

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

    Registrare il helper.php a caricamento automatico nel vostro composer.json

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

    Dopo di che è possibile utilizzare nella vostra lama di file, per esempio:

    {{ short_string($whatever_as_text) }}

    È possibile utilizzare questa semplice funzione, quindi, a livello globale nell’app.

  9. 0

    Laravel 6 Update:

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

Lascia un commento