Передача данных компании на весь контроллер в Laravel 6.x - PullRequest
0 голосов
/ 23 октября 2019

Я создаю приложение, в котором у каждой компании несколько пользователей. И все пользователи могут загружать документы / изображения / xls и т. Д. Я хочу сохранить все данные компании в отдельной папке компании. Для этого я проверяю данные о компании для каждого пользователя, а затем загружаю данные в определенную папку компании. Могу ли я проверить базу данных компании один раз для входа в систему пользователя и поделиться сведениями о компании пользователя на всех контроллерах и получить легкий доступ.

Ответы [ 3 ]

0 голосов
/ 23 октября 2019

Использование view composer в вашем AppServiceProvider

App \ Providers \ AppServiceProvider.php

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        view()->composer('*',function($view) {
            if(auth()->user()) {
              $comanyData = App\Company::where('user_id',auth()->user()->id);
              $view->with('companyData', $companyData);
            }
        });
    }
}
0 голосов
/ 23 октября 2019

Ниже описано, как поделиться переменной со всем вашим приложением через AppServiceProvider. Это также можно сделать внутри базового контроллера в методе построения.

Файл: App\Providers\AppServiceProvider.php

<?php

namespace App\Providers;

use View;
use Illuminate\Support\ServiceProvider;

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

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        View::share('key', 'value');
    }
}


После этого вы можете получить доступ к $key внутри любого представления.

0 голосов
/ 23 октября 2019

Вы можете настроить вспомогательную функцию для использования в файлах контроллеров или блейдов.

Давайте создадим помощника!

  1. Создайте простой файл PHP.

Создайте Helper.php в каталоге приложения или в любом другом каталоге.

<?php
/**
* get company data
*
*/
function companyData()
{
   // Create logic of company data
   // return company data
}
Компонент автозагрузки

После того, как мы создали наш помощник, Laravel не будет распознавать наш файл, поэтому нам нужно зарегистрировать файл помощника в нашем composer.json. Добавить массив файлов в разделе автозагрузки. Это может выглядеть так:

"autoload": {
   "classmap": ["database"],
   "psr-4": {"App\\": "app/"},
   "files" : ["app/Helper.php"]
}

Тогда не забудьте запустить

composer dumpautoload
Использование вспомогательной функции

Теперь наш помощник автоматически загружается, поэтому мы должны иметь возможность немедленно использовать наш помощник на разных контроллерах. Просто вызовите нашу функцию в любом классе

$companyData = companyData();

или в режиме лезвия

{{ companyData() }}

Дайте мне знать, если у вас возникла проблема.

...