code: public function render(ElementInterface $element, $buttonContent = null)
      {
          $openTag = $this->openTag($element);
  
          if (null === $buttonContent) {
              $buttonContent = $element->getLabel();
              $options       = $element->getOptions();
  
              if (null !== ($translator = $this->getTranslator())) {
                  $buttonContent = $translator->translate(
                      $buttonContent, $this->getTranslatorTextDomain()
                  );
              }
  
              /** @noinspection UnSafeIsSetOverArrayInspection */
              if (isset($options['icon'])) {
                  $buttonContent = sprintf('<i class="%s"></i>%s', $options['icon'], $buttonContent);
              }
          }
  
          if (null === $buttonContent) {
              throw new Exception\DomainException(
                  sprintf(
                      '%s expects either button content as the second argument, ' .
                      'or that the element provided has a label value; neither found',
                      __METHOD__
                  )
              );
          }
  
          return $openTag . $buttonContent . $this->closeTag();
      }
docs: Render a form <button> element from the provided $element, using content from $buttonContent or the element's
  "label" attribute.
  
  @param ElementInterface $element
  @param string           $buttonContent
  
  @return string
  @throws \Zend\Form\Exception\DomainException
  @throws \Zend\Form\Exception\InvalidArgumentException