首页 > 解决方案 > Laravel Policy - 检查实体的状态

问题描述

我有一个带有status属性的模型(可以是openready)。状态为 时可编辑模型,状态为open时应屏蔽ready

我是否“允许”这样做Policy?还是政策仅适用于授权?

我知道我可以做到这一点,我的问题更多是关于 Laravel 中的原则......

标签: phplaraveleloquentlaravel-6

解决方案


它认为将这种检查放入模型的策略中没有任何问题,这在一定程度上取决于上下文。我想将策略(如您所描述的)视为给定应用程序的初始入口。因此,如果它仅与控制器的更新方法相关,那么恕我直言。

但是,如果可能有其他“路径”或进程可能受到您描述的“打开/就绪”约束的影响,那么在ModelObserver saving方法中放置这种检查也是合理的。

通过这样做,您可以确保您不会ready因为忘记预先进行授权检查而意外操作对象。换句话说,通过在savingObserverClass 的方法中实现它,您将拥有一个“自包含”的行为,它代表业务逻辑而不是授权逻辑。


推荐阅读