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

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

Patricia Arquette
Libérer: 2024-12-01 02:36:08
original
726 Les gens l'ont consulté

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

Transmission de données à toutes les vues dans Laravel 5

Dans Laravel 5, le partage de données entre toutes les vues peut être réalisé par diverses méthodes.

Méthode 1 : Utiliser BaseController

Créez une classe BaseController qui étend le contrôleur de Laravel.

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

Tous les autres contrôleurs doivent ensuite s'étendre à partir de BaseController :

class SomeController extends BaseController {
    // ...
}
Copier après la connexion

Méthode 2 : Utiliser le filtre

Créer un filtre dans app/filters.php ou dans un fichier de classe de filtre séparé :

App::before(function($request) {
    View::share('data', [1, 2, 3]);
});
Copier après la connexion

Vous pouvez également définir un filtre personnalisé :

Route::filter('data-filter', function() {
    View::share('data', [1, 2, 3]);
});
Copier après la connexion

Appliquer le filtre à des itinéraires spécifiques à l'aide de Route::filter( ).

Méthode 3 : Utilisation d'un middleware

Transmettre les données à l'aide middleware aux vues :

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

class SomeMiddleware
{
    public function handle($request)
    {
        View::share('data', [1, 2, 3]);
    }
}
Copier après la connexion

Méthode 4 : Utilisation de View Composer

Lier les données aux vues à l'aide de View Composer. Cela vous permet de lier des données à des vues spécifiques ou à toutes les vues.

Pour lier des données à une vue spécifique, créez une classe ViewComposer et enregistrez-la auprès du fournisseur de services :

// 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');
}
Copier après la connexion

Pour lier données à toutes les vues, utilisez le code suivant dans le service fournisseur :

view()->composer('*', 'DataComposer');
Copier après la connexion

Référence :

  • [Documentation Laravel](https://laravel.com/docs/5.7/views#sharing-data -avec toutes les vues)
  • [Laracast Épisode](https://laracasts.com/learn/laravel/eloquent/making-models)

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal