Maison  >  Article  >  cadre php  >  Comment partager des données entre vues dans le framework laravel5.5 ? Deux façons de partager des données entre vues (avec code)

Comment partager des données entre vues dans le framework laravel5.5 ? Deux façons de partager des données entre vues (avec code)

不言
不言original
2018-08-02 14:11:393358parcourir

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

View Façade share()Méthode

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

ac924c01a08f6900d864ce13cf1f9067initViewShare();    //视图共享数据
    }
    /**
     *  视图共享数据方法
     */
    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()

da2d57d3bdb10de22b42a0069dfc7eb3share('name','共享数据片段');
    }
}

viewfacade composer()

Le compositeur de vue est une fonction de rappel ou une méthode de classe lorsque la vue est rendue si vous devez lier les données de la vue à chaque fois que vous restituez la vue, telles que les informations de connexion de l'utilisateur. Vous pouvez utiliser composer() pour organiser la logique dans un endroit séparé.

Dans cet exemple, nous enregistrerons le compositeur de vue dans le fournisseur de services AppServiceProvider.
Le code du fournisseur est le suivant :

cc1a47858451ba5ff0ab8b6b1b5c5200composer(
            //'*', '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
}
Si vous créez un nouveau fournisseur de services pour inclure le compositeur de vue. inscription, vous devez ajouter le fournisseur de services au tableau fournisseurs du fichier de configuration config/app.php

À ce stade, le compositeur de vue a été enregistré et la méthode AuthComposer@compose sera exécutée à chaque fois toutes les vues du répertoire extman sont rendues.

Définissez la classe de compositeur de vue AppHttpViewComposersAuthComposer.php

01c01bc34336503a6e00eaa6a82e83a6users = $users;
    }

    //绑定数据到视图
    public function compose(View $view)
    {
        $user_info = \Auth::user();
        $view->with('motto', $user_info);
        $view->with('count', $this->users->count());
    }
}
Avant le rendu de la vue, la méthode compose de la classe AuthComposer est appelée et l'instance IlluminateViewView est injectée dans la méthode, afin qu'elle puisse être lié en utilisant sa méthode with Data to view.

Tous les compositeurs de vues seront résolus via le conteneur de service, vous pouvez donc taper des indices sur les dépendances qui doivent être injectées dans le constructeur du compositeur de vues.

Articles connexes recommandés :

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!

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