J'essaie de définir une variable globale dans Laravel, j'ai défini la fonction __construct () mais je ne peux pas l'utiliser en dehors du contrôleur.
Où dois-je définir cette variable?
public function __construct()
{
$cat = Categories::get()->first();
}
mais je n'arrive pas à accéder à la variable $ cat dans certaines pages.
3 Réponses :
Si vous voulez accéder à la variable $ cat partout, c'est-à-dire dans tous les contrôleurs et vues, vous devez la partager comme ci-dessous:
Config::set(['user' => ['name' => 'John Doe']]);
Je suppose que vous utilisez Constructeur BaseController . Maintenant, si vos contrôleurs étendent ce BaseController , ils peuvent simplement accéder à la catégorie en utilisant $this->cat .
Deuxième méthode: strong>
Vous pouvez également essayer en utilisant la classe Config. Tout ce que vous avez à faire est d'ajouter le code suivant dans la méthode boot de app/Providers/AppServiceProvider.php
protected $cat;
public function __construct()
{
$this->cat = Categories::get()->first();
View::share('site_settings', $this->cat);
}
Puis n'importe où dans votre projet vous pouvez récupérer la valeur en utilisant Config::get('user.name');
Vous pouvez également utiliser la solution, qui est comme indiqué ci-dessous:
view('home', compact('cat'));
Maintenant, pour obtenir les données dans le contrôleur en utilisant la ligne ci-dessous;
$cat = app('cat');
et vous pouvez passer les données en vue en utilisant la ligne ci-dessous:
App::before(function($request) {
App::singleton('cat', function(){
return Categories::get()->first();
});
});
Utilisez des fournisseurs de services
https: / /hdtuto.com/article/laravel-5-global-variable-in-all-views-file
app / Providers / AppServiceProvider.php p >
{{ $siteTitle }}
et à votre avis
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->share('siteTitle', 'HDTuto.com');
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
Voulez-vous pouvoir accéder à
$ catà travers les vues?Vous pouvez vérifier cette réponse: variable globale pour tous les contrôleurs et vues
Vous pouvez consulter les compositeurs de vues de Laravel pour partager des données sur toutes les vues. ( laravel.com/docs/master/views#view-composers )