更新OroCRM帐户时插入数据

问题描述 投票:0回答:1

我向Oro帐户添加了一个新字段(*级别*字段),并为其指定了一些授权规则。当我更新帐户时,如果用户的角色没有访问权限,则不会显示该字段级别,但是当我满足该表单的要求时,帐户级别的值将被清除。

因此,我想在每次更新帐户时添加级别。我尝试扩展帐户控制器并使用以下代码更改更新方法:

protected function update(Account $entity = null)
{
    if (!$entity) {
        $entity = $this->getManager()->createEntity();
    }

    $authorizationChecker = $this->get('security.authorization_checker');

    if (!$authorizationChecker->isGranted('EDIT', new FieldVote($entity, 'level'))) {
        $entityFromDB = $this->getManager()->find($entity->getId());
        $levelFromDB = $entityFromDB->getLevel();
        $entity->setLevel($levelFromDB);
    }

    return $this->get('oro_form.model.update_handler')->update(
        $entity,
        $this->get('oro_account.form.account'),
        $this->get('translator')->trans('oro.account.controller.account.saved.message'),
        $this->get('oro_account.form.handler.account')
    );
}

但是,保存时,帐户级别更改为空白。

有人可以给我一些帮助吗?我正在使用OroCRM 2.6.19

谢谢你们!

orocrm
1个回答
0
投票

似乎您为该值分配的时间过早,并且在提交表单时将其覆盖。

我建议您将逻辑移动到the doctrine even listenerpreUpdate事件,因此它将在提交表单后执行,并将覆盖来自表单的数据。

© www.soinside.com 2019 - 2024. All rights reserved.