我正在制作一个应用程序,用户可以在其中创建活动,其他用户可以订阅它们。新活动必须通过管理面板批准,只有管理员可以访问。
被批准的活动应该被锁定,这样他们的用户就不能改变它们。只有通过管理面板批准的活动才能进行编辑。
为了实现这一点,我们制作了这个 buildRule:
public function buildRules(RulesChecker $rules)
{
// Check if activity wasn't locked
$rules->add(function ($entity, $settings)
{
// Return false if already approved before
return !$entity->approved || $entity->isDirty('approved');
}, 'alreadySubscribed', ['errorField' => 'name', 'message' => 'Activity has been approved and is now locked']);
return $rules;
}
(BuildRule 而不是验证规则,因为验证也应该在approved
字段未被修改时启动,因此不是验证的一部分。)
上面给出的规则也阻止管理员修改活动,所以我的问题是:
您可以在表中的 builRules 之间切换,就像您可以更改验证方法一样?