Почему в функции validateCouponCode() qoute есть $address->hascouponcode()?
Я просто удивляюсь, почему есть проверка на $address->hasCouponCode()
в _validateCouponCode
(Mage_Sales_Model_Quote
).
Я думаю, что ни в модели, ни в базе данных нет таких данных, как код купона для адреса.
Я спрашиваю, потому что наши разработчики переопределяют этот метод, и они проверяют это условие, но всегда $address->hasCouponCode()
ничего не возвращает.
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);