Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Daten in allen Ansichten in Laravel 5 teilen?

Wie kann ich Daten in allen Ansichten in Laravel 5 teilen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-01 02:36:08808Durchsuche

How Can I Share Data Across All Views in Laravel 5?

Übergabe von Daten an alle Ansichten in Laravel 5

In Laravel 5 kann der Datenaustausch zwischen allen Ansichten durch verschiedene Methoden erreicht werden.

Methode 1: Verwenden BaseController

Erstellen Sie eine BaseController-Klasse, die Laravels Controller erweitert.

class BaseController extends Controller
{
    public function __construct()
    {
        $data = [1, 2, 3];
        View::share('data', $data);
    }
}

Alle anderen Controller sollten dann von BaseController:

class SomeController extends BaseController {
    // ...
}

Methode erweitert werden 2: Filter verwenden

Erstellen Sie einen Filter in app/filters.php oder in einer separaten Filterklassendatei:

App::before(function($request) {
    View::share('data', [1, 2, 3]);
});

Alternativ können Sie einen benutzerdefinierten Filter definieren:

Route::filter('data-filter', function() {
    View::share('data', [1, 2, 3]);
});

Wenden Sie den Filter mit Route::filter() auf bestimmte Routen an.

Methode 3: Verwendung von Middleware

Übergeben Sie Daten mithilfe von Middleware an Ansichten:

Route::group(['middleware' => 'SomeMiddleware'], function() {
    // Routes
});

class SomeMiddleware
{
    public function handle($request)
    {
        View::share('data', [1, 2, 3]);
    }
}

Methode 4: Verwenden von View Composer

Binden Sie Daten mithilfe von View Composer an Ansichten. Dadurch können Sie Daten an bestimmte Ansichten oder alle Ansichten binden.

Um Daten an eine bestimmte Ansicht zu binden, erstellen Sie eine ViewComposer-Klasse und registrieren Sie sie beim Dienstanbieter:

// ViewComposer
use Illuminate\Contracts\View\View;

class DataComposer
{
    public function compose(View $view)
    {
        $view->with('data', [1, 2, 3]);
    }
}

// Service Provider
public function boot() {
    view()->composer('view-name', 'DataComposer');
}

Zum Binden Um Daten in alle Ansichten zu übertragen, verwenden Sie den folgenden Code im Dienst Anbieter:

view()->composer('*', 'DataComposer');

Referenz:

  • [Laravel-Dokumentation](https://laravel.com/docs/5.7/views#sharing-data -mit-allen-Ansichten)
  • [Laracast Folge](https://laracasts.com/learn/laravel/eloquent/making-models)

Das obige ist der detaillierte Inhalt vonWie kann ich Daten in allen Ansichten in Laravel 5 teilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn