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

Laravel attribue des valeurs aux modèles publics

步履不停
步履不停original
2019-06-24 18:12:383015parcourir

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'  //方法名或者类中的方法
        );
    }

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');
    }
}

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

view()->composer('*', function (View $view) {
    //logic goes here
});

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);
        });

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!

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