Вставьте данные при обновлении учетной записи OroCRM - PullRequest
0 голосов
/ 20 марта 2020

Я добавил новое поле в учетную запись Oro (* level *) и некоторые правила авторизации для него. Когда я обновляю учетную запись для пользователя с ролью без доступа, уровень поля не отображается, но значение уровня учетной записи очищается при добавлении формы в форму.

Поэтому я бы хотел Добавляйте уровень каждый раз, когда я обновляю аккаунт. Я попытался расширить контроллер учетной записи и изменить метод обновления с помощью следующего кода:

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

Спасибо, ребята!

1 Ответ

0 голосов
/ 20 марта 2020

Похоже, что вы присвоили значение слишком рано, и оно переопределяется при отправке формы.

Я рекомендую переместить логи c в doctrine даже слушателя to preUpdate событие, поэтому оно будет выполнено после отправки формы и переопределит данные из формы.

...