variabile globale in laravel

In PHP, che ho usato per definire alcune variabili nella mia header.php e li uso in tutte le mie pagine. Come posso avere qualcosa di simile in Laravel?

Io non sto parlando di View::share('xx', 'xx' );

Assumere voglio avere una variabile che contiene un numero e ho bisogno di questo numero all’interno di tutto il mio controller per calcolare qualcosa.

InformationsquelleAutor Pars | 2013-11-06

 

3 Replies
  1. 68

    Suona come un buon candidato per un file di configurazione.

    Crearne uno nuovo, chiamiamolo calculations.php:

    Laravel ~4ish:

    app
        config
            calculations.php

    Laravel ~5ish:

    config
        calculations.php

    Poi mettere la roba nel nuovo file di configurazione:

    <?php return [ 'some_key' => 42 ];

    Quindi recuperare la config in il codice da qualche parte (notare il nome del file diventa un “namespace” di sorta per il config voce):

    echo Config::get('calculations.some_key'); //42 in Laravel ~4
    echo config('calculations.some_key'); //42 in Laravel ~5
    • Veramente elegante. Grazie.
    • Eccellente. Non sapevo che si potesse fare in questo modo 🙂
    • Funziona bene per me..!!! Grazie.
    • So di oltre un anno di ritardo, ma omg grazie tanto. 😀
    • Incredibilmente elegante. Migliore risposta da lontano.
    • sei sicuro che il percorso è giusto? app/config/
    • sei sicuro che il percorso è giusto? app/config/
    • Non lo è più, è stato 5 anni fa. Il percorso è ormai solo config/calculations.php.

  2. 6

    Impostare una proprietà sul BaseController, che dovrebbe trovarsi nella controllers directory.

    Il controller dovrebbe estendere il BaseController classe e quindi ereditare le proprietà.

  3. 0

    Si potrebbe utilizzare Vista Compositori

    E invece di usare il metodo di avvio descritto nei documenti è possibile utilizzare:

    public function boot()
    {
        //Using class based composers...
        view()->composer(
            '*', 'App\Http\ViewComposers\ProfileComposer'
        );
    
        //Using Closure based composers...
        view()->composer('*', function ($view) {
    
        });
    }

    Che renderebbe qualsiasi variabili dichiarate con

    $view->with('yourVariableName', 'yourVariableValue');

    per tutti il punto di vista dell’app.

    Qui è un esempio di come ho usato in uno dei miei progetti.

    app/Providers/ComposerServiceProvider.php

    <?php
    
    namespace App\Providers;
    
    use Illuminate\Support\ServiceProvider;
    
    class ComposerServiceProvider extends ServiceProvider
    {
         /**
         * Bootstrap the application services.
         *
         * @return void
         */
        public function boot()
        {
            view()->composer(
                '*', 'App\Http\ViewComposers\UserComposer'
            );
        }
    
        /**
         * Register the application services.
         *
         * @return void
         */
        public function register()
        {
            //
        }
    }

    app/Http/ViewComposers/UserComposer.php

    <?php
    
    namespace App\Http\ViewComposers;
    
    use Illuminate\Contracts\View\View;
    use Illuminate\Contracts\Auth\Guard;
    
    class UserComposer
    {
    
        protected $auth;
    
        public function __construct(Guard $auth)
        {
            //Dependencies automatically resolved by service container...
            $this->auth = $auth;
        }
    
        public function compose(View $view)
        {
            $view->with('loggedInUser', $this->auth->user());
        }
    }

    Basta ricordare che perché si è proclamato un nuovo fornitore di servizi deve essere incluso nel “fornitori” di matrice in config/app.php

Lascia un commento