Rev 1 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace LeadersLinked\View;;use Laminas\EventManager\EventManagerInterface;use Laminas\View\ViewEvent;use Laminas\EventManager\ListenerAggregateInterface;use Laminas\Mvc\I18n\Translator;/*** @category Laminas* @package Laminas_Mvc* @subpackage View*/class RenderingStrategy implements ListenerAggregateInterface{/**** @var Translator*/private $translator;/**** @var callable[]*/private $listeners;/**** @param Translator $translator*/public function __construct($translator){$this->translator = $translator;}public function attach(EventManagerInterface $events, $priority = null){$priority = -999;$this->listeners[] = $events->attach(ViewEvent::EVENT_RESPONSE, [$this, 'render'], $priority);}public function detach(EventManagerInterface $events){foreach ($this->listeners as $index => $listener) {if ($events->detach($listener)) {unset($this->listeners[$index]);}}}public function render(ViewEvent $e){$renderer = $e->getRenderer();$response = $e->getResponse();$result = $e->getResult();/*$matches = [];preg_match_all( '/LABEL_\w+/', $result, $matches);print_r($matches); exit;*/$result = preg_replace_callback('/LABEL_\w+/',function ( $matches ) {return $this->translator->translate($matches[0]);},$result);$result = preg_replace_callback('/ERROR_\w+/',function ( $matches ) {return $this->translator->translate($matches[0]);},$result);$response->setContent($result);return $response;}}