/** * @covers Router::match * @covers Route::getParameters */ public function testParamsWithDynamicFilterMatch() { $collection = new RouteCollection(); $route = new Route('/js/:filename.js', array('_controller' => 'PHPRouter\\Test\\SomeController::dynamicFilterUrlMatch', 'methods' => 'GET')); $route->setFilters(array(':filename' => '([[:alnum:]\\.]+)'), true); $collection->attachRoute($route); $router = new Router($collection); $this->assertEquals(array(array('filename' => 'someJsFile')), $router->match('/js/someJsFile.js')->getParameters()); $this->assertEquals(array(array('filename' => 'someJsFile.min')), $router->match('/js/someJsFile.min.js')->getParameters()); $this->assertEquals(array(array('filename' => 'someJsFile.min.js')), $router->match('/js/someJsFile.min.js.js')->getParameters()); }
/** * Router runner * * @throws NotFoundException * @return bool|\PHPRouter\Route */ public function run() { $routes = Config::loadFromFile($this->routePath); $router = Route::parseConfig($routes); $exec = $router->matchCurrentRequest(); if ($exec) { return $exec; } throw new NotFoundException('Route does not found', NotFoundException::CODE); }
public function testParseConfig() { $config = Config::loadFromFile(__DIR__ . '/../../Fixtures/router.yaml'); $router = Router::parseConfig($config); self::assertAttributeEquals($config['base_path'], 'basePath', $router); }
/** * Create routes by array, and return a Router object * * @param array $config provide by Config::loadFromFile() * @return Router */ public static function parseConfig(array $config) { $collection = new RouteCollection(); foreach ($config['routes'] as $name => $route) { $collection->attachRoute(new Route($route[0], array('_controller' => str_replace('.', '::', $route[1]), 'methods' => $route[2], 'name' => $name))); } $router = new Router($collection); if (isset($config['base_path'])) { $router->setBasePath($config['base_path']); } return $router; }
$collection->attachRoute(new Route('/admin/descuentos/setDescuento/', array('_controller' => 'usuariosController::setDescuento', 'methods' => 'POST'))); //-------acceso para administradores para obtener los descuentos------ $collection->attachRoute(new Route('/admin/descuentos/getDescuentos/', array('_controller' => 'usuariosController::getDescuentos', 'methods' => 'POST'))); //-------acceso para administradores para eliminar los descuentos------ $collection->attachRoute(new Route('/admin/descuentos/delDescuento/', array('_controller' => 'usuariosController::delDescuento', 'methods' => 'POST'))); //-------acceso para administradores para actualizar los datos de un descuento------ $collection->attachRoute(new Route('/admin/descuentos/updateDescuento/', array('_controller' => 'usuariosController::updateDescuento', 'methods' => 'POST'))); //-------acceso para imprimir tabla de eventos------ $collection->attachRoute(new Route('/admin/imprimirTablaAdmin/', array('_controller' => 'usuariosController::imprimirTablaAdmin', 'methods' => 'GET'))); //-------Modificacion de datos updatePago------ $collection->attachRoute(new Route('/admin/updatePago/', array('_controller' => 'usuariosController::updatePago', 'methods' => 'POST'))); //-------Modificacion de datos updateMaterial------ $collection->attachRoute(new Route('/admin/updateMaterial/', array('_controller' => 'usuariosController::updateMaterial', 'methods' => 'POST'))); //-------imprimir datos a excel------ $collection->attachRoute(new Route('/admin/reporteExcel/', array('_controller' => 'cReportes::Excel', 'methods' => 'POST'))); //-------obtencion de relacion participantes eventos ------ $collection->attachRoute(new Route('/admin/getRelEventosParticipantes/', array('_controller' => 'usuariosController::getRelEventosParticipantes', 'methods' => 'POST'))); //-------obtencion de relacion participantes en grupo de un evento ------ $collection->attachRoute(new Route('/admin/getRelEventosParticipantesGrupos/', array('_controller' => 'usuariosController::getRelEventosParticipantesGrupos', 'methods' => 'POST'))); $collection->attachRoute(new Route('/admin/fichas/', array('_controller' => 'usuariosController::getAdjuntos', 'methods' => 'POST'))); $collection->attachRoute(new Route('/admin/adjunto/', array('_controller' => 'usuariosController::delAdjuntos', 'methods' => 'POST'))); $collection->attachRoute(new Route('/admin/delComentarios/', array('_controller' => 'usuariosController::delComentarioAdmin', 'methods' => 'POST'))); $collection->attachRoute(new Route('/admin/reporteAccesos/', array('_controller' => 'usuariosController::reporteAccesos', 'methods' => 'GET'))); $collection->attachRoute(new Route('/admin/reporteAccesos/', array('_controller' => 'usuariosController::getReporteAccesos', 'methods' => 'POST'))); $router = new Router($collection); $router->setBasePath('/'); $route = $router->matchCurrentRequest(); if (!$route) { $page = new someController(); $page->page404(); }
<?php namespace RoxFramework; use PHPRouter\Router; use PHPRouter\Route; use PHPRouter\RouteCollection; $router = new Router($routing, $routing); $route = $router->matchCurrentRequest(); if (!$route) { header("HTTP/1.1 404 Route Not Found"); exit; } $controller = (array) $route->getTarget(); if (!$controller) { header("HTTP/1.1 404 Target Not Found"); exit; } $controllerFile = APP_DIR . '/controller/' . $controller[0] . "/{$controller[1]}.php"; if (!file_exists($controllerFile)) { header("HTTP/1.1 404 Controller Not Found"); exit; } include_once $controllerFile; $controllerClass = $controller[0] . '\\Controllers\\' . $controller[1]; $controllerAction = array(new $controllerClass($controller[0]), $controller[2]); if (!is_callable($controllerAction, true)) { header("HTTP/1.1 404 Action Not Found"); exit; } $parameters = $route->getParameters();
/** * @test */ public function shouldCallRouteWithParam() { $request = $this->getRequestMock('GET', '/contact/test_123'); $router = new Router($request, $this->collection); $this->assertEquals('test_123', $router->run()); $request = $this->getRequestMock('GET', '/contact/xxx:xxx'); $router = new Router($request, $this->collection); $this->assertEquals('regex_xxx:xxx', $router->run()); }