Обратите внимание, что этот вопрос касается стоимости доставки, а не цены. Существует важная разница, то есть то, что $$ взимает метод доставки за владельца магазина, в отличие от того, какой платеж $$ оплачивается клиентом.Доступ к стоимости доставки в корзине Magento и/или выписка
shipping_tablerate
таблица базы данных включает в себя cost
поле, которое заполняется в Mage_Shipping_Model_Carrier_Tablerate
объекта во время выполнения метода collectRates
. Однако это поле недоступно нигде в стеке, например. от адреса котировки.
Мне нужно получить доступ к этому значению на странице корзины, и я не могу найти его для достижения цели, кроме как создать экземпляр объекта Mage_Shipping_Model_Rate_Request
, чтобы перейти в collectRates()
. Это кажется излишне неэффективным, учитывая, что данные уже загружены из таблицы и должны быть доступны.
Я пробовал наблюдать за событием <shipping_carrier_tablerate_load/>
, но кажется, что событие _load
не выбрано для этой модели.
Я также пытался получить доступ к скорости из цитаты:
$quote = Mage::getSingleton('checkout/cart')->getQuote();
$address = $quote->getShippingAddress();
$rate = $address->getShippingRateByCode($code ='tablerate_bestway');
Я могу видеть вычисленная price
, однако cost
нет в этой модели.
На этом этапе у меня заканчиваются идеи. Любые предложения с благодарностью получили!
Спасибо, Джонатан
Спасибо Алан, отличный ответ.Моя забота о возврате в базу данных состояла в том, что эта модель, похоже, не проходит стандартный процесс автозагрузки, поэтому почему событие '$ model_load' не выбрасывается. Мне нравится идея использовать «Mage :: register» для хранения значения. Хранит ли 'Mage :: register' глобально или просто для этого' checkout/session'? ЕСЛИ это глобально, тогда мне нужно будет проверить, что сохраненная скорость включает в себя 'dest_zip', используемый для вычисления. Но это детализация реализации. –
P.S. Загрузка базы данных для 'tablerate' выполняется в' Mage_Shipping_Model_Mysql4_Carrier_Tablerate_Collection :: __ construct() 'и является достаточно сложной, так как включает три таблицы в соединении. –
А, я неправильно понял вопрос. Я думал, что вы хотите захватить его для использования по той же просьбе. Я уверен, что Mage :: register - это предмет запроса. Глобальные переменные, не нарушающие глобальный масштаб. Кроме того, FWIW, я просто искал локальную кодовую базу 1.4 и 1.4.1 и не нашел событие shipping_carrier_tablerate_load в любом месте. –