Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Allowspecific.php
Go to the documentation of this file.
1 <?php
13 
14 class Allowspecific extends \Magento\Framework\Data\Form\Element\Select
15 {
21  public function getAfterElementHtml()
22  {
23  $elementId = $this->getHtmlId();
24  $countryListId = $this->_getSpecificCountryElementId();
25  $useDefaultElementId = $countryListId . '_inherit';
26 
27  $elementJavaScript = <<<HTML
28 <script type="text/javascript">
29 //<![CDATA[
30 document.getElementById('{$elementId}').addEventListener('change', function(event) {
31  var isCountrySpecific = event.target.value == 1,
32  specificCountriesElement = document.getElementById('{$countryListId}'),
33  // 'Use Default' checkbox of the related county list UI element
34  useDefaultElement = document.getElementById('{$useDefaultElementId}');
35 
36  if (isCountrySpecific) {
37  // enable related country select only if its 'Use Default' checkbox is absent or is unchecked
38  specificCountriesElement.disabled = useDefaultElement ? useDefaultElement.checked : false;
39  } else {
40  // disable related country select if all countries are used
41  specificCountriesElement.disabled = true;
42  }
43 });
44 //]]>
45 </script>
46 HTML;
47 
48  return $elementJavaScript . parent::getAfterElementHtml();
49  }
50 
54  public function getHtml()
55  {
56  if (!$this->getValue() || 1 != $this->getValue()) {
57  $element = $this->getForm()->getElement($this->_getSpecificCountryElementId());
58  $element->setDisabled('disabled');
59  }
60  return parent::getHtml();
61  }
62 
66  protected function _getSpecificCountryElementId()
67  {
68  return substr($this->getId(), 0, strrpos($this->getId(), 'allowspecific')) . 'specificcountry';
69  }
70 }
$element
Definition: element.phtml:12