Laravel 5.6 Внедрить переменную с поставщиком услуг в группу маршрутов - PullRequest
0 голосов
/ 06 июля 2018

У меня есть часть сайта, которая начинается с определенного префикса /manage. Можно ли как-то с помощью AppServiceProvider view-composers ввести переменную во все маршруты из этого префикса?

Я попытался сделать это, передав эту переменную в макет всех этих маршрутов. Но потом я столкнулся с проблемой. Я использую эту переменную в режиме просмотра конкретной страницы, и она возвращает мне variable not defined. Затем я проверяю отладчик laravel и вижу порядок загрузки файлов блейдов. И это было : 1. Current page view 2. Layout view 3. Sidebars and other stuff Итак, тот факт, что текущая страница загружается до макета, вызывает ошибку undefined variable.

Так, как я могу решить это? Благодаря.

Код от моего поставщика услуг:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\CT;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        view()->composer(['website.implicare.ct.show', 'website.implicare.ct.petition.index', 'layouts.ct'], function($view) {
            $ct = request()->ct;

            $permissions = [];
            foreach($ct->userPermissions(auth()->id()) as $userPermission) {
                if($userPermission->pivot->ct_id == $ct->id) {
                    array_push($permissions, $userPermission->name);
                }   
            }

            $view->with('permissions', $permissions);
        });
    }

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

1 Ответ

0 голосов
/ 06 июля 2018

создать ComposerServiceProvider

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public $theme = 'mytheme';

    public function boot()
    {

        view()->composer($this->theme.'.includes.navbar', 'App\Http\ViewComposers\MenuComposer');
       view()->composer($this->theme.'.includes.header', 'App\Http\ViewComposers\MenuComposer');

    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...