Почему в функции validateCouponCode() qoute есть $address->hascouponcode()?


Я просто удивляюсь, почему есть проверка на $address->hasCouponCode() в _validateCouponCode (Mage_Sales_Model_Quote).

Я думаю, что ни в модели, ни в базе данных нет таких данных, как код купона для адреса.

Я спрашиваю, потому что наши разработчики переопределяют этот метод, и они проверяют это условие, но всегда $address->hasCouponCode() ничего не возвращает.

Author: Michał Kuliński, 2014-04-24

1 answers

Такого метода не существует. Это называется "магически" благодаря использованию __call.
Вызов $address->hasCouponCode() переводится в вызов:

isset($address->_data['coupon_code'])

Конечно, вы не можете использовать его напрямую, потому что $_data является защищенным участником (я просто написал это здесь в качестве доказательства концепции).

Самый простой способ проверить это:

$data = $address->getData();
$result = isset($data['coupon_code']);

Код купона можно установить "на лету", даже если он не сохранен в базе данных, просто позвонив:

$address->setCouponCode(CODE HERE);
//or
$address->setData('coupon_code', CODE HERE);
 3
Author: Marius, 2014-04-24 11:33:47