예제 #1
0
 /**
  * Output the region element and javasctipt that makes it dependent from country element
  *
  * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
  * @return string
  *
  * @SuppressWarnings(PHPMD.UnusedLocalVariable)
  */
 public function render(\Magento\Framework\Data\Form\Element\AbstractElement $element)
 {
     if ($country = $element->getForm()->getElement('country_id')) {
         $countryId = $country->getValue();
     } else {
         return $element->getDefaultHtml();
     }
     $regionId = $element->getForm()->getElement('region_id')->getValue();
     $html = '<div class="field field-state required">';
     $element->setClass('input-text');
     $element->setRequired(true);
     $html .= $element->getLabelHtml() . '<div class="control">';
     $html .= $element->getElementHtml();
     $selectName = str_replace('region', 'region_id', $element->getName());
     $selectId = $element->getHtmlId() . '_id';
     $html .= '<select id="' . $selectId . '" name="' . $selectName . '" class="select required-entry" style="display:none">';
     $html .= '<option value="">' . __('Please select') . '</option>';
     $html .= '</select>';
     $html .= '<script>' . "\n";
     $html .= 'require(["prototype", "mage/adminhtml/form"], function(){';
     $html .= '$("' . $selectId . '").setAttribute("defaultValue", "' . $regionId . '");' . "\n";
     $html .= 'new regionUpdater("' . $country->getHtmlId() . '", "' . $element->getHtmlId() . '", "' . $selectId . '", ' . $this->_directoryHelper->getRegionJson() . ');' . "\n";
     $html .= '});';
     $html .= '</script>' . "\n";
     $html .= '</div></div>' . "\n";
     return $html;
 }
예제 #2
0
 /**
  * @covers \Magento\Framework\Data\Form\Element\AbstractElement::getHtml()
  */
 public function testGetHtmlWithRenderer()
 {
     $this->_model->setRequired(true);
     $expectedHtml = 'some-html';
     $rendererMock = $this->getMockForAbstractClass('Magento\\Framework\\Data\\Form\\Element\\Renderer\\RendererInterface');
     $rendererMock->expects($this->once())->method('render')->with($this->_model)->will($this->returnValue($expectedHtml));
     $this->_model->setRenderer($rendererMock);
     $this->assertEquals($expectedHtml, $this->_model->getHtml());
     $this->assertEquals(' required-entry', $this->_model->getClass());
 }
예제 #3
0
 /**
  * Add additional data to form element
  *
  * @param AbstractElement $element
  * @return $this
  */
 protected function _addAdditionalFormElementData(AbstractElement $element)
 {
     switch ($element->getId()) {
         case 'email':
             $element->setRequired(0);
             $element->setClass('validate-email');
             break;
     }
     return $this;
 }