【发布时间】:2020-05-03 04:02:10
【问题描述】:
我的模型具有status 属性(可以是open 或ready)。状态为open时可以编辑模型,但状态为ready时应阻止模型。
我是否“允许”在我的Policy 中这样做?还是政策仅适用于授权?
我知道我可以做到这一点,我的问题更多是关于 Laravel 中的原则......
【问题讨论】:
标签: php laravel eloquent laravel-6
我的模型具有status 属性(可以是open 或ready)。状态为open时可以编辑模型,但状态为ready时应阻止模型。
我是否“允许”在我的Policy 中这样做?还是政策仅适用于授权?
我知道我可以做到这一点,我的问题更多是关于 Laravel 中的原则......
【问题讨论】:
标签: php laravel eloquent laravel-6
它认为将这种检查放入模型的策略中没有错,这在一定程度上取决于上下文。我想将策略(如您所描述的)视为给定应用程序的初始入口。因此,如果它仅与控制器的更新方法相关,那么恕我直言。
但是,如果可能有其他“路径”或进程可能受到您描述的“打开/就绪”约束的影响,那么将这种检查放在 ModelObserver saving 方法中也是合理的。
通过这样做,您可以确保您不会因为忘记预先进行授权检查而意外操作对象ready。换句话说,通过在 ObserverClass 的 saving 方法中实现它,您将拥有一个“自包含”的行为,它代表业务逻辑而不是授权逻辑。
【讨论】: