示例#1
0
 public function testConcurrentRoutes()
 {
     $request = new Request();
     $request->set(['amodule', 'correct', 'foo']);
     $this->router->addRoute('/:module/:controller/:action', ['module' => 1, 'controller' => 2, 'action' => 'foo'])->addRoute('/amodule/:controller/foo', ['module' => 'correct', 'controller' => 1, 'action' => 'correct']);
     $route = $this->router->getRoute($request);
     $routeExpected = ['namespace' => 'Janeiro\\Module', 'module' => 'correct', 'controller' => 'correct', 'action' => 'correct', 'parameters' => [], 'methods' => null];
     $this->assertEquals($routeExpected, $route);
 }
示例#2
0
 /**
  * @param string $name service identifier
  * @param \Janeiro\Di\Container $container
  */
 public function register($name, Container $container)
 {
     $container->set($name, function () use($container, $name) {
         $service = new Router();
         $service->setNamespace($container['registry']->get('routing.namespace'));
         $service->setRoute(['module' => $container['registry']->get('routing.default.module'), 'controller' => $container['registry']->get('routing.default.controller'), 'action' => $container['registry']->get('routing.default.action')]);
         foreach ($container['registry']->get('routing.table') as $route) {
             foreach ($route as $pattern => $configuration) {
                 $service->addRoute($pattern, $configuration);
             }
         }
         return $service;
     });
 }
示例#3
0
 public function setup()
 {
     $container = new Container();
     $container->set('view', function () use($container) {
         $view = new View($container);
         $view->registerEngine('Janeiro\\Mvc\\View\\Standard', '.php');
         return $view;
     }, true)->set('router', function () use($container) {
         $router = new Router($container);
         $router->addRoute('/:module/:controller', ['module' => 1, 'controller' => 2, 'action' => 'index']);
         $router->addRoute('/:module/:controller/:action', ['module' => 1, 'controller' => 2, 'action' => 3]);
         $router->addRoute('/test/parameter/variable/:integer', ['module' => 'test', 'controller' => 'parameter', 'parameters' => ['variable' => 1]]);
         return $router;
     }, true);
     $this->dispatcher = new Dispatcher($container);
     $this->container = $container;
 }
示例#4
0
 /**
  * Apply routing table and start dispatch forwarding loop
  *
  * @param \Janeiro\Request\AbstractRequest $request
  * @return \Janeiro\Response
  */
 public function dispatch(AbstractRequest $request)
 {
     try {
         $this->route = $this->router->getRoute($request);
         $this->response = $this->loop($request);
     } catch (\Exception $e) {
         $this->response->setException($e);
     }
     return $this->response;
 }