我对Laravel相对较新,我创建了一个中间件和政策来处理“Ownable'我项目中雄辩的对象。
我使用特征做到了这一点:
trait Ownable
{
public function user(){
return $this->belongsTo(User::class, 'created_by');
}
}
在我的政策中,我只是这样做:
class RightPolicy
{
use HandlesAuthorization;
public function update(User $user, Ownable $ownable)
{
return $ownable->created_by == $user->id;
}
}
我的中间件,分配给我的控制器中的正确操作:
class CheckRights
{
public function __construct(Route $route, Ownable $object) {
$this->route = $route;
$this->object = $object;
}
public function handle($request, Closure $next)
{
// @TODO handle request
}
}
然后我使用Ownable特征创建了一个类:
class Thread extends Model
{
use Ownable;
}
但是,当我尝试使用这种结构运行项目时,Laravel的依赖注入器会出现错误:
构建App \ Http \ Middleware \ CheckRights时,目标[App \ Ownable]无法实例化
有没有办法让依赖注入器知道实例化正确的类(可能使用路由或其他东西)?
如果没有,是否有一种方便的方法在没有依赖注入器的情况下做其他事情以确保实例化正确的类?