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
812 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!

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