352 Stimmen

Wie man Variablen in einem Laravel Blade Template einstellt

Ich lese gerade die Laravel Blade Dokumentation und ich kann nicht herausfinden, wie ich Variablen innerhalb einer Vorlage zur späteren Verwendung zuweisen kann. Ich kann nicht tun {{ $old_section = "whatever" }} denn das würde ein Echo von "wie auch immer" hervorrufen und das will ich nicht.

Ich verstehe, dass ich Folgendes tun kann <?php $old_section = "whatever"; ?> aber das ist nicht elegant.

Gibt es eine bessere, elegante Möglichkeit, dies in einer Blade-Vorlage zu tun?

10voto

Hicham O-Sfh Punkte 498

Laravel 7 :

{{ $solution = "Laravel 7 is awesome and easy to use !!" }}

8voto

Michael J. Calkins Punkte 31024

Und plötzlich wird nichts mehr erscheinen. Aus meiner Erfahrung, wenn Sie so etwas tun müssen, bereiten Sie die html in einer Methode des Modells oder tun einige Reorganisation Ihres Codes in Arrays oder etwas.

Es gibt nie nur 1 Weg.

{{ $x = 1 ? '' : '' }}

7voto

Justin Punkte 24628

In Laravel 5.1, 5.2 :

https://laravel.com/docs/5.2/views#sharing-data-with-all-views

Möglicherweise müssen Sie einen Teil der Daten mit alle Ansichten die von Ihrer Anwendung gerendert werden. Sie können dies mit der Share-Methode der View-Factory tun. Normalerweise sollten Sie Aufrufe zur Freigabe innerhalb der Boot-Methode eines Service Providers platzieren. Es steht Ihnen frei, sie zum AppServiceProvider hinzuzufügen oder einen separaten Dienstanbieter zu erstellen, der sie aufnimmt.

Datei bearbeiten: /app/Providers/AppServiceProvider.php

<?php

namespace App\Providers;

class AppServiceProvider extends ServiceProvider
{        
    public function boot()
    {
        view()->share('key', 'value');
    }

    public function register()
    {
        // ...
    }
}

7voto

Carson Punkte 432

Ich werde die von @Pim gegebene Antwort erweitern.

Fügen Sie dies der Boot-Methode Ihres AppServiceProviders hinzu

<?php
/*
|--------------------------------------------------------------------------
| Extend blade so we can define a variable
| <code>
| @set(name, value)
| </code>
|--------------------------------------------------------------------------
*/

Blade::directive('set', function($expression) {
    list($name, $val) = explode(',', $expression);
    return "<?php {$name} = {$val}; ?>";
});

Auf diese Weise wird die Möglichkeit, einen beliebigen php-Ausdruck zu schreiben, nicht preisgegeben.

Sie können diese Richtlinie wie folgt verwenden:

@set($var, 10)
@set($var2, 'some string')

6voto

Sinan Eldem Punkte 5090

Sie können das Paket verwenden, das ich veröffentlicht habe: https://github.com/sineld/bladeset

Dann können Sie Ihre Variable einfach einstellen:

@set('myVariable', $existing_variable)

// or

@set("myVariable", "Hello, World!")

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X