laravelIl existe deux façons de partager des données entre les vues dans le framework. L'une est implémentée à l'aide de la méthode view façade share() et l'autre est implémentée à l'aide de la méthode view façade composer(). , il existe deux méthodes. Quelle est exactement la mise en œuvre de ? Jetons un coup d'œil au contenu du prochain article.
Tout d'abord, une chose à noter est : la façade View est utilisée pour accéder à l'implémentation sous-jacente d'IlluminateContractsViewFactory
Parfois, vous devez partager des fragments de données entre toutes les vues. Dans ce cas, vous pouvez utiliser la méthode de partage de la vue façade.
1. Généralement, je vais créer un contrôleur de base BaseController.php sous apphttpControllersxx
<?php namespace App\Http\Controllers\ExtMan; use Illuminate\Routing\Controller; class BaseController extends Controller { public function __construct(\Auth $auth) { $this->initViewShare(); //视图共享数据 } /** * 视图共享数据方法 */ public function initViewShare() { view()->share('action_name',get_action_name()); //当前URL的方法器名 } } //视图使用 //共享视图一般都是在layout中 {{ $action_name }}
get_action_name() est une fonction personnalisée.
conseils :
Créez appHelpersExtmanFun.php et introduisez le chargement automatique dans composer.json
"files":[ "app/Helpers/ExtmanFun.php" ]
Exécutez composer dump-autoload et il se chargera automatiquement
2. Appelez la méthode share()
<?php namespace App\Providers; use View; class AppServiceProvider extends ServiceProvider { /** * 启动所有应用服务 * * @return void */ public function boot() { View::share('key', 'value'); //也可使用 view()->share('name','共享数据片段'); } }
Dans cet exemple, nous enregistrerons le compositeur de vue dans le fournisseur de services AppServiceProvider.
Le code du fournisseur est le suivant :
<?php namespace App\Providers; #use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { public function boot() { // 使用基于类方法 // 第一个参数可以指定共享给那个视图,多个视图用数组,共享到全部视图可以用 * // 或者某个目录下所有视图 view()->composer( //'*', 'App\Http\ViewComposers\AuthComposer' //['extman.home, welcome'], 'App\Http\ViewComposers\AuthComposer' ['extman.*'], 'App\Http\ViewComposers\AuthComposer' ); //使用基于回调函数 view()->composer('*',function($view){ $view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg')); }); } other code }
Définissez la classe de compositeur de vue AppHttpViewComposersAuthComposer.php
<?php namespace App\Http\ViewComposers; use Illuminate\View\View; use Illuminate\Repositories\UserRepository; class AuthComposer { protected $users; public function __construct(UserRepository $users) { // 依赖注入通过服务容器自动解析... $this->users = $users; } //绑定数据到视图 public function compose(View $view) { $user_info = \Auth::user(); $view->with('motto', $user_info); $view->with('count', $this->users->count()); } }
Explication détaillée des données partagées entre les vues Laravel et la vue instance Composer_php
Apprentissage du framework Laravel 5 direction Afficher les transferts de données, framework laravel
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!