Magento 2 Как передать переменную js в контроллер, а затем вызвать шаблон с пользовательским кодом? - PullRequest
1 голос
/ 02 июня 2019

Мне нужно динамически изменять пользовательский атрибут на настраиваемой странице, когда я нажимаю на атрибут цвета образца.Для этого я программно создал пользовательские атрибуты с опциями на панели администратора, где я могу сохранить для каждого продукта свои собственные пользовательские атрибуты.Я понимаю, как вызывать свои пользовательские атрибуты на простых продуктах, но я не могу сделать это с настраиваемым продуктом.

Я вижу, когда я изменяю атрибут цвета - цена меняется для каждого простого продукта ([это вещь по умолчанию), как сделать то же самое, но с моими пользовательскими атрибутами?У меня есть одна идея, но я не знаю, как это реализовать.Так что я знаю, как получить текущий идентификатор продукта, когда вы щелкнули по атрибуту цвета ( через код js ), а затем мне нужно передать эти данные идентификатора в контроллер через ajax.Мне нужно знать, как именно это сделать, как передавать данные js через ajax в контроллер, а затем каждый раз, когда я нажимаю на атрибут цвета, вызывать нужный блок на странице категории??Когда я узнаю, как это сделать, я получу эти данные идентификатора - пользовательские значения атрибутов и вызову этот шаблон в нужном месте.Ниже приведен код, который вызывает настраиваемые атрибуты настраиваемого продукта, но он вызывает все атрибуты для всех простых продуктов, включаемых в настраиваемый продукт.Мне нужно вызывать эти атрибуты для текущего продукта каждый раз, когда я кликаю по атрибуту цвета.Например: если я нажимаю на черный цвет (который относится к продукту с идентификатором 123), я получаю пользовательский блок с пользовательскими атрибутами без перезагрузки страницы (например, цена). атрибуты цвета

    $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;
    }
}
...