Magento 2如何将js变量传递给控制器​​,然后使用自定义代码调用模板?

时间:2019-06-02 08:07:50

标签: ajax templates controller magento-2.3

当我单击色样颜色属性时,需要在可配置页面上动态更改自定义属性。为此,我以编程方式在管理面板上创建了自定义属性,并在其中为每个产品保存了自己的自定义属性。 我想出了如何在简单的产品上调用自定义属性,但是我无法使用可配置的产品来实现。

当我更改颜色属性时,我会看到-每个简单产品的价格都会更改([这是默认设置]),但是如何使用我的自定义属性来更改颜色? 我有一个主意,但我不知道这是怎么实现的。因此,当您单击color属性(through js code)时,我知道如何获取当前产品ID,然后我需要将此ID数据通过Ajax传递给控制器​​。我需要知道如何确切地做到这一点,如何在每次单击color属性时将js数据通过ajax传递给控制器​​,然后在类别页面上调用所需的块? ?当我知道该怎么做时,我将获得此id数据-自定义属性值,并在所需位置调用此模板。 下面的代码调用了可配置产品上的自定义属性,但是调用了可配置产品中包含的所有简单产品的所有属性。每当我对color属性赞时,都需要为当前产品调用这些属性。例如:如果我单击黑色(与ID 123的产品有关),则会获得具有自定义属性的自定义块,而无需重新加载页面(如价格)。color attributes

    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $product = $objectManager->get('Magento\Framework\Registry')->registry('current_product');
    $product_id = $product->getId();
    $configProduct = $objectManager- 
    >create('Magento\Catalog\Model\Product')->load($product_id);

    $configurable = $configProduct->getTypeId() == 
  \Magento\ConfigurableProduct\Model\Product\Type\Configurable::TYPE_CODE;
   $_children = $configProduct->getTypeInstance()- 
   >getUsedProducts($configProduct);
   if ($configurable){
    foreach ($_children as $child){
        $child_badge = $child->getResource()->getAttribute('mycustom_attribute_code')->getFrontend()->getValue($child);
        echo $child_badge;
    }
}

0 个答案:

没有答案