- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-03-2019
12:34 PM
12-03-2019
12:34 PM
Having trouble changing popup modal form options
I am struggling to find a way to change the values of a quote form on a modal popup when the customer clicks on the request a quote button. Here is the form.
popup
popup with hints enabled
I went into options.phtml and the code is as follows.
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ // @codingStandardsIgnoreFile /* @var $block \Magento\Catalog\Block\Product\View\Options */ ?> <?php $_options = $block->decorateArray($block->getOptions()) ?> <?php $_product = $block->getProduct(); ?> <?php $_productId = $block->getProduct()->getId() ?> <?php if (count($_options)):?> <script type="text/x-magento-init"> { "#product_addtocart_form": { "priceOptions": { "optionConfig": <?= /* @escapeNotVerified */ $block->getJsonConfig() ?>, "controlContainer": ".field", "priceHolderSelector": "[data-product-id='<?= $block->escapeHtml($_productId) ?>'][data-role=priceBox]" } } } </script> <?php $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $attributeSet = $objectManager->create('Magento\Eav\Api\AttributeSetRepositoryInterface'); $attributeSetRepository = $attributeSet->get($block->getProduct()->getAttributeSetId()); $attribute_set_name = $attributeSetRepository->getAttributeSetName(); ?> <?php if(($attribute_set_name === "GC Form"or $attribute_set_name === "MS Form" or $attribute_set_name === "HPLC Form") and $attribute_set_name !== "default"): ?> <div id="product_modal" class="modal"> <!-- Modal content --> <div class="product_modal-content"> <span class="close">×</span> <h3>Quote Request for: <br/><?= $_product->getName(); ?></h3> <p style="color:#c14e4e">Please complete the form below to request more information and pricing.</p> <div class="product-add-form"> <input type="hidden" name="product" value="<?= /* @escapeNotVerified */ $_product->getId() ?>" /> <input type="hidden" name="selected_configurable_option" value="" /> <input type="hidden" name="item" value="<?= /* @noEscape */ $block->getRequest()->getParam('id') ?>" /> <?= $block->getBlockHtml('formkey') ?> <?= $block->getChildHtml('form_top') ?> <div class="option-in-box" id="option-in-box"> <div class="RequestQuote-left"> <?php foreach ($_options as $key =>$_option): ?> <?php if(($_option['title'] === "Preferred Manufacturer") or $_option['title'] === "How Many Samples per Month"):?> <?= $block->createTextFiled($_option) ?> <?php elseif($_option['title'] === "Budgets"):?> <?= $block->createSelect($_option); ?> <?php elseif ($_option['title'] === "Trade-In(s)"):?> <?= $block->createSubDetailSelect($_option,$_options, array("Describe Your Trade-In information"=>"Yes")); ?> <?php endif; ?> <?php endforeach; ?> </div> <div class="RequestQuote-right"> <?php foreach ($_options as $key =>$_option): ?> <?php if($_option->getTitle() == 'Voltage'): ?> <?= $block->createDropdown($_option); ?> <?php elseif($_option['title'] === "Choose Your Application"):?> <?= $block->createSubDetailDropdown($_option, $_options, array("Describe your Application"=>"Other")); ?> <?php elseif($_option['title'] === "Delivery Expected"):?> <?= $block->createSelect($_option); ?> <?php endif; ?> <?php endforeach; ?> </div> <?php if($attribute_set_name === "GC Form" or $attribute_set_name === "HPLC Form" or $attribute_set_name === "MS Form"): ?> <div class="modal-more-options" id="modal-more-options" style="display: none;"> <?php if($attribute_set_name === "GC Form"): ?> <div class="RequestQuote-left"> <?php foreach ($_options as $key => $_option):?> <?php if($_option->getTitle() == "Sampling" or $_option->getTitle() == "Injectors"): ?> <?= $block->createSelect($_option); ?> <?php elseif ($_option->getTitle() == "Options"):?> <?= $block->createSubDetailSelect($_option, $_options, array("Please Indicate"=>"Other")); ?> <?php endif;?> <?php endforeach;?> </div> <div class="RequestQuote-right"> <?php foreach ($_options as $key => $_option):?> <?php if($_option->getTitle() == "Detectors"): ?> <?= $block->createSubDetailSelect($_option, $_options, array("MSD Options"=>"MSD - Mass Spec Detector","Pump Options"=>"MSD - Mass Spec Detector","Mass Range"=>"MSD - Mass Spec Detector")); ?> <?php elseif ($_option->getTitle() == "Communications"):?> <?= $block->createSelect($_option); ?> <?php elseif ($_option->getTitle() == "Accessories"):?> <?= $block->createSelect($_option); ?> <?php elseif ($_option->getTitle() == "Data System Required?"):?> <?= $block->createSubDetailSelect($_option, $_options, array("What Version of Software?"=>"No","What Data System"=>"Yes","Operating System"=>"Yes")); ?> <?php endif; ?> <?php endforeach;?> </div> <?php elseif ($attribute_set_name === "MS Form"):?> <div class="RequestQuote-left"> <?php foreach ($_options as $key => $_option):?> <?php if($_option->getTitle() == "Instrument" or $_option->getTitle() == "Accessories"): ?> <?= $block->createSelect($_option); ?> <?php endif; ?> <?php endforeach;?> </div> <div class="RequestQuote-right"> <?php foreach ($_options as $_option):?> <?php if($_option->getTitle() === "Sample Introduction" ):?> <?= $block->createSubDetailSelect($_option, $_options, array("Other Source"=>"Other Source","Specify Model"=>"Existing LC")); ?> <?php elseif ($_option->getTitle() == "Qualification and Quantification"):?> <?= $block->createSelect($_option); ?> <?php elseif ($_option->getTitle() === "Mass Range" ): ?> <?= $block->createTextFiled($_option) ?> <?php endif; ?> <?php endforeach;?> </div> <?php elseif ($attribute_set_name === "HPLC Form"):?> <div class="RequestQuote-left"> <?php foreach ($_options as $_option):?> <?php if($_option->getTitle() === "Stand-Alone System or Front-End" ):?> <?= $block->createSubDetailSelect($_option, $_options, array("Please Indicate Existing MS Model"=>"Front-End")); ?> <?php elseif ($_option->getTitle() === "Pumps" ): ?> <?= $block->createSelect($_option); ?> <?php elseif ($_option->getTitle() === "Autosampler Needed" ): ?> <?= $block->createSubDetailSelect($_option, $_options, array("Options"=>"Yes")); ?> <?php elseif ($_option->getTitle() === "Data System" ): ?> <?= $block->createSubDetailSelect($_option, $_options, array("What Version of Software?"=>"No","What Data System"=>"Yes","Operating System"=>"Yes")); ?> <?php endif;?> <?php endforeach;?> </div> <div class="RequestQuote-right"> <?php foreach ($_options as $_option):?> <?php if ($_option->getTitle() == "Accessories"):?> <?= $block->createSelect($_option); ?> <?php elseif($_option->getTitle() === "Detectors" ):?> <?= $block->createSubDetailSelect($_option, $_options, array("Qualification and Quantification"=>"MS - Mass Spec","Instrument"=>"MS - Mass Spec","Do you need Exact Mass Capabilities"=>"MS - Mass Spec","Mass Range"=>"MS - Mass Spec")); ?> <?php endif;?> <?php endforeach;?> </div> <?php endif;?> </div> <?php endif;?> </div> <div class="request-quote-button-centered"> <?php if($attribute_set_name === "GC Form" or $attribute_set_name === "HPLC Form" or $attribute_set_name === "MS Form"): ?> <button type="button" title="Add to Quote" class="action toquote show-mote-options-btn" id="show-more-options-btn"> <span>Show More</span> </button> <?php endif;?> <button type="submit" title="Add to Quote" class="action toquote product-addtoquote-btn" id="product-addtoquote-button"> <span>Add to Quote</span> </button> </div> </div> </div> </div> <script type="text/javascript"> require(['jquery','mage/mage'],function($){ $('#show-more-options-btn').on('click', function(){ console.log('test'); if($('#modal-more-options').css('display') === 'none'){ $('#modal-more-options').css('display','block'); $('#show-more-options-btn').text('Show Less'); } else { $('#modal-more-options').css('display','none'); $('#show-more-options-btn').text('Show More'); } }); }); function showOther(id, element,changeValue) { if(element.value === changeValue){ document.getElementById(id).style.display = 'block'; } else { document.getElementById(id).style.display = 'none'; } } function radioCheck(ele){ var parentEle = document.getElementsByName(ele); for(var i =0; i< parentEle.length; i++){ var childDivs = parentEle[i].parentElement.getElementsByClassName('sub-item-left'); if(parentEle[i].checked ){ if(childDivs){ for(var k = 0; k< childDivs.length; k++){ childDivs[k].style.display = 'block'; } } } else { if(childDivs){ for(var k = 0; k< childDivs.length; k++){ childDivs[k].style.display = 'none'; } } } } } var quote_modal = document.getElementById("product_modal"); var quote_btn = document.getElementById("quote_btn"); var quote_span = document.getElementsByClassName("close")[0]; quote_btn.onclick = function() { quote_modal.style.display = "block"; } quote_span.onclick = function() { quote_modal.style.display = "none"; } window.onclick = function(event) { if (event.target === quote_modal) { quote_modal.style.display = "none"; } } </script> <?php else:?> <?php foreach ($_options as $_option): ?> <?= $block->getOptionHtml($_option) ?> <?php endforeach; ?> <?php endif;?> <?php endif;?>
I was told that the values are modified in another file Productoptions.php which after modifying no changes take place to the modal popup.I am trying to change the budget currently.
Labels:
1 REPLY 1
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-03-2019
12:42 PM
12-03-2019
12:42 PM
Re: Having trouble changing popup modal form options
Here is the Productoptions.php that i couldn't insert due to message size. I had to truncate the end of the file as it is too long.
<?php namespace GTS\CustomOptions\Observer; use Magento\Framework\Event\ObserverInterface; class Productoptions implements ObserverInterface { protected $productRepository; public function __construct( \Magento\Catalog\Api\ProductRepositoryInterface $productRepository ) { $this->productRepository = $productRepository; } public function execute(\Magento\Framework\Event\Observer $observer) { $product = $observer->getProduct(); $attributeSet = $product->getAttributeSetId(); $_productQuotable = $product->getResource()->getAttribute('cart2quote_quotable')->getFrontend()->getValue($product); $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $sku = $product->getSku(); $productId = $product->getId(); $storeId = $product->getStoreId(); $product = $this->productRepository->get($sku); if (!$product->getHasOptions() and $_productQuotable == 'Yes') { $options = []; switch ($attributeSet){ case '11': $options = array_merge($this->get_QuoteAble_data(),$this->get_GC_data()); break; case '12': $options = array_merge($this->get_QuoteAble_data(),$this->get_MS_data()); break; case '13': $options = array_merge($this->get_QuoteAble_data(),$this->get_HPLC_data()); break; // case '14': // $options = $this->get_QuoteAble_data(); // break; } if(!empty($options)){ foreach ($options as $arrayOptions) { $product->setHasOptions(1); $optionObj = $objectManager->create('\Magento\Catalog\Model\Product\Option'); $customOption = $optionObj ->setProductId($productId) ->setStoreId($storeId) ->addData($arrayOptions); $customOption->save(); $product->addOption($customOption); $this->productRepository->save($product); } } } } private function get_QuoteAble_data(){ $basic = [ '0' => [ 'title' => 'Preferred Manufacturer', 'type' => 'field', 'is_require' => 0, 'sort_order' => 0, 'price' => '0.00', 'price_type' => 'fixed', 'max_characters' => '0', 'sku' => '' ], '1' => [ 'title' => 'How Many Samples per Month', 'type' => 'field', 'is_require' => 0, 'sort_order' => 1, 'price' => '0.00', 'price_type' => 'fixed', 'max_characters' => '0', 'sku' => '' ], '2' => [ 'title' => "Voltage", 'type' => 'drop_down', 'is_require' => 0, 'sort_order' => 2, 'values' => [ '1' => [ 'title' => '110', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 1, ], '2' => [ 'title' => '220', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 2, ], '3' => [ 'title' => 'Unknown', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 3, ], ] ], '3' => [ 'title' => "Choose Your Application", 'type' => 'drop_down', 'is_require' => 0, 'sort_order' => 3, 'values' => [ '1' => [ 'title' => 'Biological', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 1, ], '2' => [ 'title' => 'Cannabis', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 2, ], '3' => [ 'title' => 'Clinical', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 3, ], '4' => [ 'title' => 'Pharmaceutical', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 4, ], '5' => [ 'title' => 'Environmental', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 5, ], '6' => [ 'title' => 'Forensic', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 6, ], '7' => [ 'title' => 'Materials', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 7, ], '8' => [ 'title' => 'Other', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 8, ], ] ], '4' => [ 'title' => 'Describe your Application', 'type' => 'field', 'is_require' => 0, 'sort_order' => 4, 'price' => '0.00', 'price_type' => 'fixed', 'max_characters' => '0', 'sku' => '' ], '5' => [ 'title' => 'Budgets', 'type' => 'radio', 'is_require' => 1, 'sort_order' => 5, 'values' => [ '1' => [ 'title' => '$2,000 - $5,000', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 1, ], '2' => [ 'title' => '$5,000 - $15,000', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 2, ], '3' => [ 'title' => '$15,000 - $20,000', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 3, ], '4' => [ 'title' => '$20,000 - $35,000', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 4, ], '5' => [ 'title' => '$35,000+', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 5, ], ] ], '6' => [ 'title' => 'Trade-In(s)', 'type' => 'radio', 'is_require' => 0, 'sort_order' => 6, 'values' => [ '1' => [ 'title' => 'No', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 1, ], '2' => [ 'title' => 'Yes', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 2, ], ] ], '7' => [ 'title' => 'Describe Your Trade-In information', 'type' => 'field', 'is_require' => 0, 'sort_order' => 7, 'price' => '0.00', 'price_type' => 'fixed', 'max_characters' => '0', 'sku' => '' ], '8' => [ 'title' => 'Delivery Expected', 'type' => 'radio', 'is_require' => 1, 'sort_order' => 8, 'values' => [ '1' => [ 'title' => 'Immediately', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 1, ], '2' => [ 'title' => '1 - 2 Months', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 2, ], '3' => [ 'title' => '3 - 6 Months', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 3, ], '4' => [ 'title' => '6 - 12 Months', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 4, ], '5' => [ 'title' => 'Budgetary Quote', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 5, ], '6' => [ 'title' => 'Rental', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 6, ], '7' => [ 'title' => 'Info Only', 'price' => 0, 'price_type' => 'fixed', 'sku' => '', 'sort_order' => 7, ], ] ], ]; return $basic; }