我在项目控制器的每个方法中使用$user = Auth::user();
。
我用它来获取属于用户的项目,也传递给视图。
我该如何简化它?
例如:public function index()
{
$user = Auth::user();
$projects = $user->projects;
return view('project.index', compact('user', 'projects'));
}
我想使用视图编辑器,但我仍然需要$user在控制器内获取数据…
如果你需要在每个控制器中访问$user,你可以通过服务容器注入它。Laravel不将用户存储在容器中,所以你需要定义自己的服务提供者。幸运的是,这很简单。
-
实现提供者
//app/Providers/CurrentUserServiceProvider.php <?php namespace App'Providers; use Illuminate'Support'ServiceProvider; class CurrentUserServiceProvider extends ServiceProvider { public function register() { $this->app->bind(User::class, function ($app) { return Auth::user(); }); } }
-
注册供应商
//config/app.php 'providers' => [ //here go existing providers 'App'Providers'CurrentUserServiceProvider' ]
-
将User定义为控制器操作中的依赖项
class MyController extends Controller { public function someAction(User $user) { echo $user->id; } }