Laravel: внедрение зависимости зарегистрированного пользователя?

#php #laravel

#php #laravel

Вопрос:

Возможно ли, чтобы в контроллерах было меньше шаблонов, когда текущий пользователь должен быть известен?

 class FooController extends Controller
{
    function index(Request $request) {
        $user = Auth::user(); // <------
        return Foo::where('user_id', $user->id)->get()->toArray();
    }
}
  

Возможно ли это получить $user непосредственно из внедрения зависимостей?

Ответ №1:

Вы можете сделать это из Request класса

 $user = $request->user();
  

ИЛИ — использование вспомогательных функций

 $user = auth()->user();
  

Комментарии:

1. Разве это не просто альтернатива тому, что они уже делают, а не вопрос об автоматическом получении пользователя?

2. @NigelRen Действительно

3. Извините, если я неправильно понял ваш вопрос, вы можете выполнить вспомогательную функцию, чтобы автоматически получить текущего пользователя, например user() , в случае просмотров, которые вы можете использовать вспомогательный метод, который вы создали, или использовать view composers для обмена текущей аутентификацией со всеми представлениями.

Ответ №2:

в Controller.php вы можете добавить защищенное свойство

 protected $user;


public function __construct()
{
    $this->user = auth()->user ?? null;
}
  

затем во всех компонентах вы можете сделать $this->user