Подтвердить что ты не робот

Глобальная переменная в laravel

В PHP я использовал некоторые переменные в моем header.php и использовал их на всех моих страницах. Как я могу сделать что-то подобное в Laravel?

Я не говорю о View::share('xx', 'xx' );

Предположим, что я хочу иметь переменную, которая содержит в ней число, и мне нужно это число внутри всех моих контроллеров, чтобы что-то вычислить.

4b9b3361

Ответ 1

Звучит как хороший кандидат для файла конфигурации .

Создайте новый, назовите его calculations.php:

app
    config
        calculations.php

Затем добавьте материал в новый файл конфигурации:

<?php return array( 'some_key' => 42 );

Затем загрузите конфигурацию в свой код где-нибудь (обратите внимание, что имя файла становится "пространством имен" для элемента конфигурации):

echo Config::get('calculations.some_key'); // 42

Ответ 2

Задайте свойство на BaseController, которое должно быть расположено в вашем каталоге controllers.

Ваши контроллеры должны расширить класс BaseController и, таким образом, наследовать его свойства.

Ответ 3

Вы можете использовать Просмотр композиторов

И вместо использования метода загрузки, описанного в документах, вы можете использовать:

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

    // Using Closure based composers...
    view()->composer('*', function ($view) {

    });
}

Это сделает любые переменные, которые вы объявляете с помощью

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

ко всем представлениям в вашем приложении.

Вот полный пример того, как я использовал это в одном из моих проектов.

приложение/Поставщики/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()
    {
        //
    }
}

приложение /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());
    }
}

Просто помните, что, поскольку вы объявили нового поставщика услуг, он должен быть включен в массив 'providers' в config/app.php