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); } }
Tous les autres contrôleurs doivent ensuite s'étendre à partir de BaseController :
class SomeController extends BaseController { // ... }
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]); });
Vous pouvez également définir un filtre personnalisé :
Route::filter('data-filter', function() { View::share('data', [1, 2, 3]); });
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]); } }
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'); }
Pour lier données à toutes les vues, utilisez le code suivant dans le service fournisseur :
view()->composer('*', 'DataComposer');
Référence :
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!