Как переопределить бандл в OroCrm

Я пытаюсь (безуспешно) переопределить определенный класс пакета. Класс, который я хотел бы переопределить:

Oro \ Bundle \ MagentoBundle \ Entity \ Repository \ CustomerRepository

Для этого я создал свой пакет

namespace Kiwee\Bundle\MnhBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class MnhMagentoBundle extends Bundle {

    public function getParent() {
        return 'OroMagentoBundle';
    }
}

И добавил bundles.yml

bundles:
    - Kiwee\Bundle\MnhBundle\MnhMagentoBundle

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

Я попытался создать файл с тем же относительным путем, что и класс, который я хотел бы переопределить, но это не сработало.

namespace Kiwee\Bundle\MnhBundle\Entity\Repository;

use Oro\Bundle\MagentoBundle\Entity\Repository\CustomerRepository as BaseCustomerRepository;

class CustomerRepository extends BaseCustomerRepository
{
    public function calculateLifetimeValue(Customer $customer)
    {
        // [... here is my custom logic for this method ...]

    }
}

Первая проблема, с которой я столкнулся, заключается в том, что «Клиент» не того же типа, что и в исходном классе. Во-вторых, этот метод, даже если он исправлен путем объявления полного пути к классу, никогда не используется, пока используется оригинал. Намек?

Большое тебе спасибо


person Enzo Perrotta    schedule 04.07.2017    source источник
comment
Взгляните на это   -  person DonCallisto    schedule 04.07.2017


Ответы (1)


Просто переопределите его как обычный репозиторий доктрин. См. Этот ответ https://stackoverflow.com/a/37486268/2119164, он должен решить вашу проблему.

person Serhii Polishchuk    schedule 04.07.2017