Maison >développement back-end >tutoriel php >Comment puis-je partager efficacement des données dans toutes les vues dans Laravel 5 ?

Comment puis-je partager efficacement des données dans toutes les vues dans Laravel 5 ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-18 17:06:10464parcourir

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

Comment partager efficacement des données dans toutes les vues dans Laravel 5

L'impératif de rendre certaines données universellement accessibles dans toutes les vues d'une application dans Laravel 5 est fréquemment rencontré par les développeurs. Ce didacticiel vous guidera méticuleusement à travers plusieurs approches pour atteindre cet objectif.

Partage de données avec BaseController

L'établissement d'une classe BaseController qui étend le contrôleur de Laravel fournit un moyen pratique d'initialiser et de partager des données à l'échelle mondiale. D'autres contrôleurs peuvent alors hériter de BaseController au lieu du contrôleur par défaut.

class BaseController extends Controller
{
    public function __construct()
    {
        $user = User::all();
        View::share('user', $user);
    }
}

Utilisation de filtres

Des filtres peuvent être utilisés pour garantir que des données spécifiques sont méticuleusement configurées pour chaque vue sur toutes les requêtes :

App::before(function($request)
{
    View::share('user', User::all());
});

Vous pouvez également établir un filtre sur mesure et l'invoquer explicitement :

Route::filter('user-filter', function() {
    View::share('user', User::all());
});

Route::group(['filter' => 'user-filter'], function() {
    // Define routes here
});

Exploiter le middleware

Le middleware offre une autre approche simplifiée pour la mise en œuvre du partage de données entre les vues.

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

class SomeMiddleware {
    public function handle($request)
    {
        View::share('user', auth()->user());
    }
}

Utilisation de View Composers

View Les compositeurs fournissent un mécanisme flexible pour lier des données distinctes à des vues spécifiques. Vous pouvez définir des compositeurs qui ciblent des vues individuelles ou s'appliquent à toutes les vues.

view()->composer("ViewName", "App\Http\ViewComposers\TestViewComposer");

class TestViewComposer {
    public function compose(View $view) {
        $view->with('ViewComposerTestVariable', "Calling with View Composer Provider");
    }
}

Dans la vue ViewName.blade.php :

{{ $ViewComposerTestVariable }}

Pour appliquer un compositeur de vue à toutes les vues, modifiez simplement le fournisseur de services :

view()->composer('*', "App\Http\ViewComposers\TestViewComposer");

En conclusion, Laravel 5 offre un large éventail d'approches pour partager des données entre vues, permettant aux développeurs de sélectionner la méthode la plus appropriée en fonction sur leurs besoins spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn