Beispiel #1
0
    /**
     * Dispatch a request
     * 
     * @events dispatch.pre, dispatch.post
     * @param  Request $request 
     * @param  null|Response $response 
     * @param  null|Event $e
     * @return Response|mixed
     */
    public function dispatch(Request $request, Response $response = null, Event $e = null)
    {
        $this->request = $request;
        if (!$response) {
            $response = new HttpResponse();
        }
        $this->response = $response;

        if ($e instanceof Event && !$e instanceof MvcEvent) {
            $eventParams = $e->getParams();
            $e = new MvcEvent();
            $e->setParams($eventParams);
            unset($eventParams);
        }
        if (null === $e) {
            $e = new MvcEvent();
        }
        $e->setRequest($request)
          ->setResponse($response)
          ->setTarget($this);
        $this->event = $e;

        $result = $this->events()->trigger('dispatch', $e, function($test) {
            return ($test instanceof Response);
        });

        if ($result->stopped()) {
            return $result->last();
        }
        return $e->getResult();
    }
Beispiel #2
0
 /**
  * Get the event
  *
  * @return MvcEvent
  * @throws Exception\DomainException if unable to find event
  */
 protected function getEvent()
 {
     $controller = $this->getController();
     if (!$controller instanceof InjectApplicationEventInterface) {
         throw new Exception\DomainException('Forward plugin requires a controller that implements InjectApplicationEventInterface');
     }
     $event = $controller->getEvent();
     if (!$event instanceof MvcEvent) {
         $params = array();
         if ($event) {
             $params = $event->getParams();
         }
         $event = new MvcEvent();
         $event->setParams($params);
     }
     return $event;
 }
 /**
  * Get the event
  *
  * @return MvcEvent
  * @throws DomainException if unable to find event
  */
 protected function getEvent()
 {
     if ($this->event) {
         return $this->event;
     }
     $controller = $this->getController();
     if (!$controller instanceof InjectApplicationEventInterface) {
         throw new DomainException(get_class($this) . ' requires a controller that implements InjectApplicationEventInterface');
     }
     $event = $controller->getEvent();
     if (!$event instanceof MvcEvent) {
         $params = $event->getParams();
         $event = new MvcEvent();
         $event->setParams($params);
     }
     $this->event = $event;
     return $this->event;
 }
Beispiel #4
0
 /**
  * Get the event
  *
  * @return MvcEvent
  * @throws Exception\DomainException if unable to find event
  */
 protected function getEvent()
 {
     if ($this->event) {
         return $this->event;
     }
     $controller = $this->getController();
     if (!$controller instanceof InjectApplicationEvent) {
         throw new Exception\DomainException('Layout plugin requires a controller that implements InjectApplicationEvent');
     }
     $event = $controller->getEvent();
     if (!$event instanceof MvcEvent) {
         $params = $event->getParams();
         $event = new MvcEvent();
         $event->setParams($params);
     }
     $this->event = $event;
     return $this->event;
 }
Beispiel #5
0
 /**
  * Set an event to use during dispatch
  *
  * By default, will re-cast to MvcEvent if another event type is provided.
  *
  * @param  Event $e
  * @return void
  */
 public function setEvent(Event $e)
 {
     if ($e instanceof Event && !$e instanceof MvcEvent) {
         $eventParams = $e->getParams();
         $e = new MvcEvent();
         $e->setParams($eventParams);
         unset($eventParams);
     }
     $this->event = $e;
 }
Beispiel #6
0
    /**
     * Get the event
     * 
     * @return MvcEvent
     * @throws Exception\DomainException if unable to find event
     */
    protected function getEvent()
    {
        if ($this->event) {
            return $this->event;
        }

        $controller = $this->getController();
        if (!$controller instanceof EventAware) {
            throw new Exception\DomainException('Redirect plugin requires a controller that is EventAware');
        }

        $event = $controller->getEvent();
        if (!$event instanceof MvcEvent) {
            $params = $event->getParams();
            $event  = new MvcEvent();
            $event->setParams($params);
        }
        $this->event = $event;

        return $this->event;
    }
Beispiel #7
0
 /**
  * Get the event
  *
  * @return MvcEvent
  * @throws Exception\DomainException if unable to find event
  */
 protected function getEvent()
 {
     if ($this->event) {
         return $this->event;
     }
     $controller = $this->getController();
     if (!$controller instanceof InjectApplicationEventInterface) {
         throw new Exception\DomainException(sprintf('Forward plugin requires a controller that implements InjectApplicationEventInterface; received %s', is_object($controller) ? get_class($controller) : var_export($controller, 1)));
     }
     $event = $controller->getEvent();
     if (!$event instanceof MvcEvent) {
         $params = [];
         if ($event) {
             $params = $event->getParams();
         }
         $event = new MvcEvent();
         $event->setParams($params);
     }
     $this->event = $event;
     return $this->event;
 }