/** * {@inheritDoc} */ public function render(ElementInterface $element, array $attributes = []) { $markup = ''; $renderer = $this->getView(); if (!method_exists($renderer, 'plugin')) { return $markup; } /* @var $flashMessenger \Zend\View\Helper\FlashMessenger */ $flashMessenger = $renderer->plugin('flashmessenger'); if ($flashMessenger->hasCurrentMessages() || $element->getMessages()) { $formName = $element->getName(); foreach ($this->classMessages as $namespace => $class) { $attribs = $attributes; if ($namespace === PluginFlashMessenger::NAMESPACE_ERROR) { $flashMessenger->setTranslatorTextDomain($this->getTranslatorTextDomain()); if (!$this->getMessageOpenFormat()) { $this->setMessageOpenFormat($flashMessenger->getMessageOpenFormat()); } if (!$this->getMessageSeparatorString()) { $this->setMessageSeparatorString($flashMessenger->getMessageSeparatorString()); } if (!$this->getMessageCloseString()) { $this->setMessageCloseString($flashMessenger->getMessageCloseString()); } if ($flashMessenger->hasCurrentMessages() && ($messages = $flashMessenger->getCurrentMessagesFromNamespace("{$formName}-{$namespace}"))) { $element->setMessages(array_merge($element->getMessages(), $messages)); } if (isset($attribs['class'])) { $attribs['class'] .= ' ' . $class; } else { $attribs['class'] = $class; } $markup .= parent::render($element, $attribs); } elseif ($flashMessenger->hasCurrentMessages()) { if (isset($attribs['class'])) { $class = array_merge((array) $attribs['class'], (array) $class); } $markup .= $flashMessenger->renderCurrent("{$formName}-{$namespace}", (array) $class); } } } return $markup; }