SonataAdminBundle仅禁用某些项目的编辑

时间:2014-10-13 05:38:06

标签: symfony sonata-admin

我目前正在开展一个需要审核的项目。

有多组用户:

  1. 内容创建者
  2. 内容审核员
  3. 管理员
  4. 业务要求是,一旦CREATOR提交了REVIEW项目,他们就不能再编辑它了。

    如何通过检查项目的STATUS是否为UNDER_REVIEW来禁用某些项目的编辑?

1 个答案:

答案 0 :(得分:0)

标准方法是使用ACL,如Sonata Admin Security docs

中所述

总结:

选民

public function vote(TokenInterface $token, $object, array $attributes)
{
    //...

    foreach ($attributes as $attribute) {
        if ($this->supportsAttribute($attribute) && $object instanceof Item) {
            if $attribute == 'EDIT' && ($token->getUser()->hasRole('ROLE_CREATOR') && $object->getStatus() == 'UNDER_REVIEW')
                return self::ACCESS_DENIED;
            }

            if (($token->getUser()->hasRole('ROLE_ADMIN') {
                return self::ACCESS_GRANTED;
            }
            //etc etc
        }
    }

    //...
}