'info', PluginFlashMessenger::NAMESPACE_ERROR => 'error', PluginFlashMessenger::NAMESPACE_SUCCESS => 'success', PluginFlashMessenger::NAMESPACE_DEFAULT => 'default', ); /** * Templates for the open/close/separators for message tags * * @var string */ protected $messageCloseString = ''; protected $messageOpenFormat = '
  • '; protected $messageSeparatorString = '
  • '; /** * Html escape helper * * @var EscapeHtml */ protected $escapeHtmlHelper; /** * Flash messenger plugin * * @var PluginFlashMessenger */ protected $pluginFlashMessenger; /** * Service locator * * @var ServiceLocatorInterface */ protected $serviceLocator; /** * Returns the flash messenger plugin controller * * @param string|null $namespace * @return FlashMessenger|PluginFlashMessenger */ public function __invoke($namespace = null) { if (null === $namespace) { return $this; } $flashMessenger = $this->getPluginFlashMessenger(); return $flashMessenger->getMessagesFromNamespace($namespace); } /** * Proxy the flash messenger plugin controller * * @param string $method * @param array $argv * @return mixed */ public function __call($method, $argv) { $flashMessenger = $this->getPluginFlashMessenger(); return call_user_func_array(array($flashMessenger, $method), $argv); } /** * Render Messages * * @param string $namespace * @param array $classes * @return string */ public function render($namespace = PluginFlashMessenger::NAMESPACE_DEFAULT, array $classes = array()) { $flashMessenger = $this->getPluginFlashMessenger(); $messages = $flashMessenger->getMessagesFromNamespace($namespace); if (empty($messages)) { return ''; } // Prepare classes for opening tag if (empty($classes)) { if (isset($this->classMessages[$namespace])) { $classes = $this->classMessages[$namespace]; } else { $classes = $this->classMessages[PluginFlashMessenger::NAMESPACE_DEFAULT]; } $classes = array($classes); } // Flatten message array $escapeHtml = $this->getEscapeHtmlHelper(); $messagesToPrint = array(); $translator = $this->getTranslator(); $translatorTextDomain = $this->getTranslatorTextDomain(); array_walk_recursive($messages, function ($item) use (&$messagesToPrint, $escapeHtml, $translator, $translatorTextDomain) { if ($translator !== null) { $item = $translator->translate( $item, $translatorTextDomain ); } $messagesToPrint[] = $escapeHtml($item); }); if (empty($messagesToPrint)) { return ''; } // Generate markup $markup = sprintf($this->getMessageOpenFormat(), ' class="' . implode(' ', $classes) . '"'); $markup .= implode(sprintf($this->getMessageSeparatorString(), ' class="' . implode(' ', $classes) . '"'), $messagesToPrint); $markup .= $this->getMessageCloseString(); return $markup; } /** * Set the string used to close message representation * * @param string $messageCloseString * @return FlashMessenger */ public function setMessageCloseString($messageCloseString) { $this->messageCloseString = (string) $messageCloseString; return $this; } /** * Get the string used to close message representation * * @return string */ public function getMessageCloseString() { return $this->messageCloseString; } /** * Set the formatted string used to open message representation * * @param string $messageOpenFormat * @return FlashMessenger */ public function setMessageOpenFormat($messageOpenFormat) { $this->messageOpenFormat = (string) $messageOpenFormat; return $this; } /** * Get the formatted string used to open message representation * * @return string */ public function getMessageOpenFormat() { return $this->messageOpenFormat; } /** * Set the string used to separate messages * * @param string $messageSeparatorString * @return FlashMessenger */ public function setMessageSeparatorString($messageSeparatorString) { $this->messageSeparatorString = (string) $messageSeparatorString; return $this; } /** * Get the string used to separate messages * * @return string */ public function getMessageSeparatorString() { return $this->messageSeparatorString; } /** * Set the flash messenger plugin * * @param PluginFlashMessenger $pluginFlashMessenger * @return FlashMessenger */ public function setPluginFlashMessenger(PluginFlashMessenger $pluginFlashMessenger) { $this->pluginFlashMessenger = $pluginFlashMessenger; return $this; } /** * Get the flash messenger plugin * * @return PluginFlashMessenger */ public function getPluginFlashMessenger() { if (null === $this->pluginFlashMessenger) { $this->setPluginFlashMessenger(new PluginFlashMessenger()); } return $this->pluginFlashMessenger; } /** * Set the service locator. * * @param ServiceLocatorInterface $serviceLocator * @return AbstractHelper */ public function setServiceLocator(ServiceLocatorInterface $serviceLocator) { $this->serviceLocator = $serviceLocator; return $this; } /** * Get the service locator. * * @return ServiceLocatorInterface */ public function getServiceLocator() { return $this->serviceLocator; } /** * Retrieve the escapeHtml helper * * @return EscapeHtml */ protected function getEscapeHtmlHelper() { if ($this->escapeHtmlHelper) { return $this->escapeHtmlHelper; } if (method_exists($this->getView(), 'plugin')) { $this->escapeHtmlHelper = $this->view->plugin('escapehtml'); } if (!$this->escapeHtmlHelper instanceof EscapeHtml) { $this->escapeHtmlHelper = new EscapeHtml(); } return $this->escapeHtmlHelper; } }