আমার ম্যাজেন্টো সংস্করণটি 2.1.0। আমি কীভাবে সমস্ত সক্রিয় শিপিং পদ্ধতির তালিকা পেতে পারি?
কোন সাহায্যের অত্যন্ত প্রশংসা হবে
আমার ম্যাজেন্টো সংস্করণটি 2.1.0। আমি কীভাবে সমস্ত সক্রিয় শিপিং পদ্ধতির তালিকা পেতে পারি?
কোন সাহায্যের অত্যন্ত প্রশংসা হবে
উত্তর:
অথবা আপনি Magento \ শিপিং \ মডেল \ কনফিগার \ উত্স \ Allmethods ব্যবহার করতে পারেন যা কেবল এটি করে!
কিউর শাহের উত্তর ছাড়াও
আপনি নীচের কোড ব্যবহার করে সমস্ত সক্রিয় শিপিং পেতে পারেন:
protected $scopeConfig;
protected $shipconfig;
public function __construct(
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
\Magento\Shipping\Model\Config $shipconfig
) {
$this->shipconfig=$shipconfig;
$this->scopeConfig = $scopeConfig;
}
public function getShippingMethods(){
$activeCarriers = $this->shipconfig->getActiveCarriers();
$storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORE;
foreach($activeCarriers as $carrierCode => $carrierModel)
{
$options = array();
if( $carrierMethods = $carrierModel->getAllowedMethods() )
{
foreach ($carrierMethods as $methodCode => $method)
{
$code= $carrierCode.'_'.$methodCode;
$options[]=array('value'=>$code,'label'=>$method);
}
$carrierTitle =$this->scopeConfig->getValue('carriers/'.$carrierCode.'/title');
}
$methods[]=array('value'=>$options,'label'=>$carrierTitle);
}
return $methods;
}
নীচের কোড ব্যবহার করে আপনি পিএইচটিএমএল ফাইলে ক্যারিয়ারের তালিকা পাবেন। এখানে $block
ব্লক সম্পর্কিত যা আমরা উপরে ফাংশন সংজ্ঞায়িত করেছি
<?php $carriers = $block->getShippingMethods(); ?>
<select name="shipping" class="control-select">
<option value=""><?php /* @escapeNotVerified */ echo __('Please Select'); ?></option>
<?php foreach ($carriers as $carrier): ?>
<optgroup label="<?php /* @escapeNotVerified */ echo $carrier['label'] ?>">
<?php foreach ($carrier['value'] as $child): ?>
<option value="<?php /* @escapeNotVerified */ echo $child['value'] ?>">
<?php /* @escapeNotVerified */ echo $child['label']; ?>
</option>
<?php endforeach; ?>
</optgroup>
<?php endforeach; ?>
</select>
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$activeShipping = $objectManager->create('Magento\Shipping\Model\Config')->getActiveCarriers();
দ্রষ্টব্য: আমি load অবজেক্ট ম্যানেজারের সাথে সরাসরি লোডিং অবজেক্টের বিপক্ষে, আরও ভাল প্রভাবের জন্য আপনি এটি আপনার নির্মাত্রে ইনজেক্ট করতে পারেন। আপনি কীভাবে এটি অর্জন করতে পারেন তা আমি উদাহরণ দিয়েছি। `
উত্তম উপায়
protected $_shippingConfig;
public function __construct(
\Magento\Shipping\Model\Config $shippingConfig
) {
$this->_shippingConfig=$shippingConfig
}
এখন আপনি এর মাধ্যমে সমস্ত সক্রিয় শিপিং পদ্ধতি পেতে পারেন
$this->_shippingConfig->getActiveCarriers();
আপনি যদি store
সুনির্দিষ্ট চান active shipping method
তবে আপনি $store
অবজেক্টটি পাস করতে পারেন parameter
, আপনি নীচের এই পদ্ধতির $store
প্যারামিটারটি দেখতে পাবেন
public function getActiveCarriers($store = null)
{
$carriers = [];
$config = $this->_scopeConfig->getValue('carriers', \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $store);
foreach (array_keys($config) as $carrierCode) {
if ($this->_scopeConfig->isSetFlag('carriers/' . $carrierCode . '/active', \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $store)) {
$carrierModel = $this->_carrierFactory->create($carrierCode, $store);
if ($carrierModel) {
$carriers[$carrierCode] = $carrierModel;
}
}
}
return $carriers;
}