cancel
Showing results for 
Search instead for 
Did you mean: 

Как расширять модели?

Как расширять модели?

Мой вопрос не про создание модуля HelloWorld. И не про preference в файле di.xml.

Вот сам вопрос: как именно расширять и работать с моделями мадженты?

 

Приведу пример: есть модель invoice и invoice-item. Поставлена задача: сделать редактирование amounts в "инвойсах". Конечно же, сразу есть простой путь через di.xml. Но сейчас не об этом пути.

Так же есть вариант сделать свои модели (как наследники базовых) и уже с ними работать. Только в этом случае такие методы как getInvoiceCollection сразу начинают доставлять боль: хочется работать с моделями в стиле "единого языка" из ddd, но не ясно как это сделать в этом случае. Нет, есть тут один способ который особенно любят советовать на SO:

$myModel->load($originalModel->getEntityId());

Забавно что на том же SO есть совет так не делать потому что не вызываются события и вообще надо делать через репозитории.

В сторонних расширениях чуть сложнее чем вышеуказанный helloworld все делается на своих моделях. Но опять же, в половине случаев используется стандартные модули, а в половину делается $myModel->load... ну вы поняли, такое себе.

 

Короче, я хочу верить что есть какой-то способ разработки расширений так, чтобы можно было хоть 10 расширений для клиентского модуля поставить, и они будут нормально работать. И чтобы обязательно без всяких preference, ->load после каждого чиха и plugins.

 

Знаете ли вы такой способ?

Уверены, что такого нет? Скажите, это тоже важно знать.