/**
  * @dataProvider routesProvider
  *
  * @param $arRoute
  * @param $strUri
  * @param $strClassName
  */
 public function testRoutes($arRoute, $strUri, $strClassName)
 {
     $this->router->add($arRoute['route'], $arRoute['parameters'])->setName($arRoute['name']);
     $this->router->handle($strUri);
     $boolMatched = $this->router->wasMatched();
     $this->assertTrue($boolMatched, 'failed to match ' . $strUri);
     $strRouteName = $this->router->getMatchedRoute()->getName();
     $this->assertEquals($arRoute['name'], $strRouteName, 'matched wrong route');
     $this->setUpDispatcher();
     $this->dispatcher->dispatch();
     $strControllerClassName = $this->dispatcher->getControllerClass();
     $this->assertEquals($strClassName, $strControllerClassName, 'wrong controller class name');
 }
Beispiel #2
0
 public function dispatch()
 {
     try {
         $controller = parent::dispatch();
     } catch (\Exception $e) {
         $this->forward($this->exceptionPath);
         if (isset($this->exceptionPath['module'])) {
             $this->setModuleName($this->exceptionPath['module']);
         }
         $this->setControllerName($this->exceptionPath['controller']);
         $this->setActionName($this->exceptionPath['action']);
         /**
          * @todo Change to setParam after fix of Zephir's bug
          */
         $this->setParams(array('exception' => $e));
         return $this->dispatch();
     }
     /**
      * @var $response \Phalcon\Http\Response
      */
     $response = $controller->getDI()->get('response');
     $response->setJsonContent($this->getReturnedValue());
     /**
      * @todo Need to fix
      */
     $response->send();
     exit;
     return $controller;
 }
Beispiel #3
0
 /**
  * Dispatch.
  * Override it to use own logic.
  *
  * @throws \Exception
  * @return object
  */
 public function dispatch()
 {
     try {
         $parts = explode('_', $this->_handlerName);
         $finalHandlerName = '';
         foreach ($parts as $part) {
             $finalHandlerName .= ucfirst($part);
         }
         $this->_handlerName = $finalHandlerName;
         $this->_actionName = strtolower($this->_actionName);
         return parent::dispatch();
     } catch (\Exception $e) {
         $this->_handleException($e);
         if (ENV == ENV_DEVELOPMENT) {
             throw $e;
         } else {
             $id = Exception::logError('Exception', $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
             $this->getDI()->setShared('currentErrorCode', function () use($id) {
                 return $id;
             });
         }
     }
     return parent::dispatch();
 }
<?php

/**
 * Created by PhpStorm.
 * User: rcmonitor
 * Date: 07.07.15
 * Time: 15:46
 */
use Phalcon\Di;
use Phalcon\Events\Manager;
use Phalcon\Mvc\Dispatcher;
use Phalcon\Mvc\Router;
use Phalcon\Version;
$di = new Di\FactoryDefault();
$oRouter = new Router(false);
$oRouter->setDI($di);
$oRouter->add('/:controller', array('controller' => 1, 'action' => 'index'));
$oEventManager = new Manager();
$oEventManager->attach('dispatch:beforeDispatch', function () {
    return false;
});
$oDispatcher = new Dispatcher();
$oDispatcher->setDI($di);
$oDispatcher->setEventsManager($oEventManager);
$oRouter->handle('/test');
$oDispatcher->setControllerName($oRouter->getControllerName());
$oDispatcher->setActionName($oRouter->getActionName());
$oDispatcher->dispatch();
echo $oDispatcher->getControllerClass() . PHP_EOL;
echo Version::get() . PHP_EOL;