Совместное использование аутентифицированного пользователя между представлениями в Laravel: методы и примеры кода

В Laravel совместное использование аутентифицированного пользователя во всех представлениях является общим требованием для многих веб-приложений. Это позволяет вам получать доступ к информации, специфичной для пользователя, и отображать персонализированный контент во всем приложении. В этой статье блога мы рассмотрим несколько методов достижения этой функциональности и предоставим примеры кода для каждого метода.

Метод 1: использование компоновщиков представлений Laravel
Laravel предоставляет функцию под названием «композиторы представлений», которая позволяет вам привязывать данные к определенным представлениям. Вы можете использовать композитор представлений, чтобы разделить аутентифицированного пользователя во всех представлениях. Вот пример:

  1. Создать класс композитора представления:

    namespace App\Http\ViewComposers;
    use Illuminate\Contracts\View\View;
    use Illuminate\Support\Facades\Auth;
    class UserComposer
    {
    public function compose(View $view)
    {
        $view->with('user', Auth::user());
    }
    }
  2. Зарегистрируйте композитор представления в методе bootвашего AppServiceProvider:

    use App\Http\ViewComposers\UserComposer;
    use Illuminate\Support\Facades\View;
    public function boot()
    {
    View::composer('*', UserComposer::class);
    }

Теперь переменная userбудет доступна во всех представлениях.

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

  1. Создайте класс промежуточного программного обеспечения:

    namespace App\Http\Middleware;
    use Closure;
    use Illuminate\Support\Facades\Auth;
    class ShareAuthenticatedUser
    {
    public function handle($request, Closure $next)
    {
        view()->share('user', Auth::user());
        return $next($request);
    }
    }
  2. Зарегистрируйте промежуточное ПО в свойстве $middlewareвашего файла app/Http/Kernel.php:

    protected $middleware = [
    // Other middleware...
    \App\Http\Middleware\ShareAuthenticatedUser::class,
    ];

Теперь переменная userбудет доступна во всех представлениях.

Метод 3: использование базового контроллера
Вы также можете создать базовый контроллер и расширить его всеми остальными контроллерами. Таким образом, вы можете поделиться аутентифицированным пользователем базового контроллера со всеми представлениями. Вот пример:

  1. Создайте базовый контроллер:

    namespace App\Http\Controllers;
    use Illuminate\Routing\Controller;
    use Illuminate\Support\Facades\Auth;
    use Illuminate\View\View;
    class BaseController extends Controller
    {
    protected function shareUserToViews(View $view)
    {
        $view->with('user', Auth::user());
    }
    }
  2. Расширить базовый контроллер другими контроллерами:

    namespace App\Http\Controllers;
    class ExampleController extends BaseController
    {
    public function index()
    {
        return view('example.index');
    }
    }

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

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