Maison > cadre php > Laravel > Laravel attribue des valeurs aux modèles publics

Laravel attribue des valeurs aux modèles publics

步履不停
Libérer: 2019-06-24 18:12:38
original
3049 Les gens l'ont consulté

Laravel attribue des valeurs aux modèles publics

Plusieurs fois au cours du processus de développement, des valeurs sont attribuées aux modèles publics, tels que la barre de navigation supérieure, le bas de la page, etc. Il est impossible d'attribuer des valeurs ​​​​dans chaque contrôleur.

La solution dans Laravel est la suivante :
Modifier

AppProvidersAppServiceProvider

Ajouter

Vue dans le boot method ()->composer('common.header',function ($view){ //common.header correspond au modèle Blade
$view->with('key', 'value');
} );

Vous pouvez également attribuer des valeurs à tous les modèles

View()->share('key', 'value');

====================================== ==

Les compositeurs de vues sont liés aux vues. Ils sont utilisés dans la fonction boot() d'un fournisseur de services. Lorsqu'une vue est chargée, en raison du rôle de compositeur de vues, elle appelle un certain. fonction et passe les paramètres.

1, créez un fournisseur de services

php artisan make:provider ComposerServiceProvider

puis ajoutez ComposerServiceProvider à config/app.php

2, écrivez view composer

public function boot()
    {
        view()->composer(
            'app', //模板名
            'App\Http\ViewComposers\MovieComposer'  //方法名或者类中的方法
        );
    }
Copier après la connexion

ce qui signifie qu'une fois app.blade.php chargé, la fonction AppHttpViewComposersMovieComposer dans composer est exécutée (la raison pour laquelle elle est exécutée ici La fonction composer est la fonction par défaut), si vous souhaitez la modifier, il suffit de

view()->composer('app','AppHttpViewComposersMovieComposer<a href="https://my.oschina.net/u/862816" class="referer" target="_blank">@foobar</a>'); //Votre propre méthode définie

La fonction foobar est exécutée ici

Écrivez ceci dans AppHttpViewComposersMovieComposer.php

<?php

namespace App\Http\ViewComposers;

use Illuminate\View\View;//**记得引入这个啊(因为在composer函数参数里使用了View类)**

class MovieComposer
{
    public $movieList = [];
    public function __construct()
    {
        $this->movieList = [
            'Shawshank redemption',
            'Forrest Gump',
        ];
    }
    public function compose(View $view)
    {
        $view->with('latestMovie');
    }
}
Copier après la connexion

3, autre
Lorsque tous les modèles sont requis, utilisez *expression régulière

view()->composer('*', function (View $view) {
    //logic goes here
});
Copier après la connexion

Si vous souhaitez spécifier plusieurs vues à utiliser, enveloppez-les dans des tableaux

view()->composer(['nav', 'footer'],'App\Http\ViewComposers\MovieComposer');
或者
 view()->composer(['admin.admin'], function ($view){
            $column =  $this->object_array(DB::table('column')->get());
            foreach($column as $k=>$v){
                $chid = explode(',',$v['childid']);
                foreach($chid as $value){
                    $column[$k]['chname'][] =  $this->object_array(DB::table('column_child')->where('id',$value)->first());
                }
            }
            $view->with('columns',$column);
        });
Copier après la connexion

Pour plus d'articles techniques liés à PHP, veuillez visiter le Tutoriel PHP colonne pour apprendre !

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal