Skip to content
Snippets Groups Projects
Select Git revision
  • 776bf5b04983b624fdb35c9efd6761cd09a5caa6
  • master default protected
  • detached4
  • detached3
  • detached2
  • bsv-next
  • detached
  • php82
  • 6.x
  • 6.4.0
  • 6.3.3
  • 6.3.2
  • 6.3.1
  • 6.3.0
  • 6.2.7
  • 6.2.6
  • 6.2.5
  • 6.2.4
  • 6.2.3
  • 6.2.2
  • 6.2.1
  • 6.2.0
  • 6.1.3
  • 6.1.2
  • 6.1.1
  • 6.1.0
  • 6.0.0
27 results

AxiosRenderer.php

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    AxiosRenderer.php 1.82 KiB
    <?php
    
    namespace UnicaenVue\View\Renderer;
    
    
    use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger;
    use Laminas\View\Model\JsonModel;
    use Laminas\View\Renderer\JsonRenderer;
    use UnicaenVue\Axios\AxiosExtractor;
    use UnicaenVue\View\Model\AxiosModel;
    
    /**
     * Description of AxiosRenderer
     *
     * @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
     */
    class AxiosRenderer extends JsonRenderer
    {
        protected FlashMessenger $flashMessenger;
    
    
    
        public function render($nameOrModel, $values = null)
        {
            if ($nameOrModel instanceof AxiosModel) {
                $data = $this->makeData($nameOrModel);
            }
    
            return parent::render($data, null);
        }
    
    
    
        protected function makeData(AxiosModel $axiosModel): array
        {
            $data = AxiosExtractor::extract($axiosModel->getData(), $axiosModel->getProperties(), $axiosModel->getTriggers());
    
            $namespaces = [
                $this->flashMessenger::NAMESPACE_SUCCESS,
                $this->flashMessenger::NAMESPACE_WARNING,
                $this->flashMessenger::NAMESPACE_ERROR,
                $this->flashMessenger::NAMESPACE_INFO,
            ];
    
            $messages = [];
            foreach ($namespaces as $namespace) {
                if ($this->flashMessenger->hasCurrentMessages($namespace)) {
                    $messages[$namespace] = $this->flashMessenger->getCurrentMessages($namespace);
                    $this->flashMessenger->clearCurrentMessages($namespace);
                }
            }
    
            $jsonData = [
                'data'     => $data,
                'messages' => $messages,
            ];
    
            return $jsonData;
        }
    
    
    
        public function getFlashMessenger(): FlashMessenger
        {
            return $this->flashMessenger;
        }
    
    
    
        public function setFlashMessenger(FlashMessenger $flashMessenger): AxiosRenderer
        {
            $this->flashMessenger = $flashMessenger;
    
            return $this;
        }
    
    }