本文整理匯總了PHP中Magento\Quote\Model\Quote\Address::getGroupedAllShippingRates方法的典型用法代碼示例。如果您正苦於以下問題:PHP Address::getGroupedAllShippingRates方法的具體用法?PHP Address::getGroupedAllShippingRates怎麽用?PHP Address::getGroupedAllShippingRates使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Magento\Quote\Model\Quote\Address
的用法示例。
在下文中一共展示了Address::getGroupedAllShippingRates方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: _beforeToHtml
/**
* Retrieve payment method and assign additional template values
*
* @return $this
* @SuppressWarnings(PHPMD.UnusedLocalVariable)
*/
protected function _beforeToHtml()
{
$methodInstance = $this->_quote->getPayment()->getMethodInstance();
$this->setPaymentMethodTitle($methodInstance->getTitle());
$this->setShippingRateRequired(true);
if ($this->_quote->getIsVirtual()) {
$this->setShippingRateRequired(false);
} else {
// prepare shipping rates
$this->_address = $this->_quote->getShippingAddress();
$groups = $this->_address->getGroupedAllShippingRates();
if ($groups && $this->_address) {
$this->setShippingRateGroups($groups);
// determine current selected code & name
foreach ($groups as $code => $rates) {
foreach ($rates as $rate) {
if ($this->_address->getShippingMethod() == $rate->getCode()) {
$this->_currentShippingRate = $rate;
break 2;
}
}
}
}
$canEditShippingAddress = $this->_quote->getMayEditShippingAddress() && $this->_quote->getPayment()->getAdditionalInformation(\Magento\Paypal\Model\Express\Checkout::PAYMENT_INFO_BUTTON) == 1;
// misc shipping parameters
$this->setShippingMethodSubmitUrl($this->getUrl("{$this->_controllerPath}/saveShippingMethod"))->setCanEditShippingAddress($canEditShippingAddress)->setCanEditShippingMethod($this->_quote->getMayEditShippingMethod());
}
$this->setEditUrl($this->getUrl("{$this->_controllerPath}/edit"))->setPlaceOrderUrl($this->getUrl("{$this->_controllerPath}/placeOrder"));
return parent::_beforeToHtml();
}
示例2: _prepareShippingOptions
/**
* Attempt to collect address shipping rates and return them for further usage in instant update API
* Returns empty array if it was impossible to obtain any shipping rate
* If there are shipping rates obtained, the method must return one of them as default.
*
* @param Address $address
* @param bool $mayReturnEmpty
* @param bool $calculateTax
* @return array|false
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.NPathComplexity)
*/
protected function _prepareShippingOptions(Address $address, $mayReturnEmpty = false, $calculateTax = false)
{
$options = [];
$i = 0;
$iMin = false;
$min = false;
$userSelectedOption = null;
foreach ($address->getGroupedAllShippingRates() as $group) {
foreach ($group as $rate) {
$amount = (double) $rate->getPrice();
if ($rate->getErrorMessage()) {
continue;
}
$isDefault = $address->getShippingMethod() === $rate->getCode();
$amountExclTax = $this->_taxData->getShippingPrice($amount, false, $address);
$amountInclTax = $this->_taxData->getShippingPrice($amount, true, $address);
$options[$i] = new \Magento\Framework\DataObject(['is_default' => $isDefault, 'name' => trim("{$rate->getCarrierTitle()} - {$rate->getMethodTitle()}", ' -'), 'code' => $rate->getCode(), 'amount' => $amountExclTax]);
if ($calculateTax) {
$options[$i]->setTaxAmount($amountInclTax - $amountExclTax + $address->getTaxAmount() - $address->getShippingTaxAmount());
}
if ($isDefault) {
$userSelectedOption = $options[$i];
}
if (false === $min || $amountInclTax < $min) {
$min = $amountInclTax;
$iMin = $i;
}
$i++;
}
}
if ($mayReturnEmpty && $userSelectedOption === null) {
$options[] = new \Magento\Framework\DataObject(['is_default' => true, 'name' => __('N/A'), 'code' => 'no_rate', 'amount' => 0.0]);
if ($calculateTax) {
$options[$i]->setTaxAmount($address->getTaxAmount());
}
} elseif ($userSelectedOption === null && isset($options[$iMin])) {
$options[$iMin]->setIsDefault(true);
}
// Magento will transfer only first 10 cheapest shipping options if there are more than 10 available.
if (count($options) > 10) {
usort($options, [get_class($this), 'cmpShippingOptions']);
array_splice($options, 10);
// User selected option will be always included in options list
if ($userSelectedOption !== null && !in_array($userSelectedOption, $options)) {
$options[9] = $userSelectedOption;
}
}
return $options;
}
示例3: getShippingRates
/**
* @param Address $address
* @return mixed
*/
public function getShippingRates($address)
{
$groups = $address->getGroupedAllShippingRates();
return $groups;
}