как получить код купона по идентификатору правила на странице успешного оформления заказа?
У меня есть коллекция правил купонов, созданная на стороне администратора и отображающая имена правил в конфигурации системы пользовательского модуля. На самом деле, я хотел получить код купона правила корзины, который был выбран администратором в конфигурации системы, и отобразить его на странице успеха, чтобы клиент мог использовать его в следующем заказе. Получение правил Сбора кода купона с помощью этого:
<?php
namespace Vendor\Module\Block;
use Magento\Framework\View\Element\Template;
class Coupon extends Template
{
protected $_salesRuleCoupon;
public function __construct(
Context $context,
\Magento\SalesRule\Model\ResourceModel\Coupon\CollectionFactory $salesRuleCoupon
)
{
$this->_salesRuleCoupon = $salesRuleCoupon;
}
public function getCouponsList()
{
$collection= $this->_salesRuleCoupon->create();
return $collection->getData();
}
}
И в шаблоне:
$coupons=$block->getCouponsList();
foreach($coupons as $coupon){
echo $coupon['code'];
}
Коллекция правил на стороне администратора (Конфигурация системы) является извлекается следующим образом:
<?php
namespace Vendor\Module\Model\Config;
class CouponCode implements \Magento\Framework\Option\ArrayInterface
{
/**
* @return array
*/
public function toOptionArray()
{
$om = \Magento\Framework\App\ObjectManager::getInstance();
$arr = [];
$couponCollection = $om->create('Magento\SalesRule\Model\Rule')->getCollection();
foreach ($couponCollection as $rule) {
$arr[] = ["value" => $rule->getId(), "label" => __( $rule->getName() ) ];
}
return $arr;
}
}
Вызывая его в исходной модели как:
<field id="coupon_code" translate="label" type="select" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Use Coupon Code Rule</label>
<source_model>Vendor\Module\Model\Config\CouponCode</source_model>
<depends>
<field id="display">1</field>
</depends>
</field>
Когда я извлекаю значение конфигурации выбранного правила в пользовательском модуле, оно отображает его идентификатор, как в таблице Правил цены корзины в бэкэнде. Все, что мне нужно, это получить коды купонов через идентификатор Правил цены в корзине и отобразить в конфигурации системы только те правила, у которых есть коды купонов, и отобразить код купона выбранного правила из конфигурации системы на странице успеха.
Любая помощь - это крайне необходим и будет положительно оценен!
1 answers
Вы можете получить код купона со следующим кодом
namespace QaisarSatti\Module\Block;
class CouponCode extends \Magento\Framework\View\Element\Template
{
protected $rule;
public function __construct(
\Magento\SalesRule\Model\RuleFactory $rule
) {
$this->rule = $rule;
}
public function getCouponCode()
{
$ruleId = 7;
$couponCodeData = $this->rule->create()->load($ruleId);
echo $couponCodeData->getCouponCode();
}
}