View Composer не работает в моем приложении Laravel - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь поделиться переменными в нескольких представлениях, поэтому я попробовал композитор представлений, но он не работает, поскольку не передает переменные, и есть ли способ его отладки

ComposerServiceProvider.php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        view()->composer(
            'layouts.admin.dashboard',
            'App\Http\ViewComposers\StatComposer'
        );
    }

    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

Так что теперь здесь будет файл Composer

StatComposer.php

   <?php

namespace App\Http\ViewComposers;

use Analytics;
use Spatie\Analytics\Period;
use App\Libraries\GoogleAnalytics;
use Illuminate\Http\Request;
use Illuminate\View\View;

class StatComposer
{
    /**
     * Create a movie composer.
     *
     * @return void
     */
    public function __construct()
    {
        $result = GoogleAnalytics::topCountries();
        $country = $result->pluck('country');
        $country_sessions = $result->pluck('sessions');

        $topBrowsers = GoogleAnalytics::topBrowsers();
        $browser = $topBrowsers->pluck('browser');
        $browser_sessions = $topBrowsers->pluck('sessions');

        $totalPageViews = GoogleAnalytics::fetchVisitorsAndPageViews();
        $date = $totalPageViews->pluck('date');
        $visitors = $totalPageViews->pluck('visitors');
        $pageViews = $totalPageViews->pluck('pageViews');
    }

    /**
     * Bind data to the view.
     *
     * @param  View  $view
     * @return void
     */
    public function compose(View $view)
    {
        $view->with('country', 'country_sessions', 'browser', 'browser_sessions','date','visitors','pageViews');
    }
}

Так что я не могу найти способ отладить его какпеременные не передаются в представление, в которое я пытаюсь передать их, и представление выдает ошибку неопределенной переменной.

1 Ответ

0 голосов
/ 30 апреля 2019

Проблема в том, что вы объявляете много переменных без указания значений в функции compose.Кроме того, вы не сохраняете данные в любом месте.Это должно быть так.

protected $country;

/**
 * Create a movie composer.
 *
 * @return void
 */
public function __construct()
{
    $result = GoogleAnalytics::topCountries();
    $this->country = $result->pluck('country');
}

/**
 * Bind data to the view.
 *
 * @param  View  $view
 * @return void
 */
public function compose(View $view)
{
    $view->with('country', $this->country);
}

Обратите внимание, что мы объявляем свойство classes сверху, затем сохраняем его в этом свойстве и затем устанавливаем переменную 'country' в методе with с помощью $ this-> countryсвойство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...