我在我的Projects控制器的每个方法中使用$user = Auth::user();
。
我用它来获取属于用户的项目,并传递给视图。
我如何简化?
例如:
public function index()
{
$user = Auth::user();
$projects = $user->projects;
return view('project.index', compact('user', 'projects'));
}
我考虑使用视图编辑器,但我仍然需要控制器内的$ user来获取数据......
答案 0 :(得分:0)
如果您需要在每个控制器中访问 $ 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'
]
将用户定义为控制器操作中的依赖项
class MyController extends Controller {
public function someAction(User $user) {
echo $user->id;
}
}