public function testNormalize() { $param1 = ['controller' => 'Users', 'action' => 'index', 'arguments' => [0, 1]]; $url1 = Router::normalize($param1); $this->assertEquals('/Users/index/0/1', $url1); $param2 = ['controller' => 'Users', 'action' => 'index']; $url2 = Router::normalize($param2); $this->assertEquals('/Users/index/', $url2); }
public function testDispatch() { $request = new RequestAggregate(); $request->setRequest(new Param('')); Router::add('/', ['controller' => 'Pages', 'action' => 'index', 'arguments' => [1]]); $dispatcher = new Dispatcher($request); $expect = '<div><p>1</p> </div> '; $this->expectOutputString($expect); $dispatcher->dispatch($request); }
/** * リクエストデータから適切なコントローラを生成し、適切なメソッドを実行する. * * @param \TRW\Request\RequestAggreagete * @return mixid 結果を出力する */ public function dispatch($request) { if (empty($request->getParam('controller'))) { $defaultParam = Router::parse($request); $request->setRequest($defaultParam); } if (Router::has($request->getParam('url'))) { $mapedParam = Router::parse($request); $request->setRequest($mapedParam); } $controllerInstance = $this->getController($request); $this->invoke($controllerInstance, $request); echo $this->render($controllerInstance, $request); }
<?php use TRW\Core\Configure; use TRW\Router\Router; use TRW\ActiveRecord\BaseRecord; use TRW\ActiveRecord\Database\Driver\MySql; use TRW\Exception\ErrorHandler; //ini_set('display_errors',1); Configure::load(dirname(__FILE__) . '/config.php'); set_exception_handler('TRW\\Exception\\ErrorHandler::handleException'); BaseRecord::setConnection(new MySql(Configure::read('Database', 'MySql'))); Router::add('/', ['controller' => 'Pages', 'action' => 'index']);
/** * リダイレクトを行う. * * @param array $param リダイレクト先の情報 * 次の様に定義する * $param = * [ * 'controller' => 'Users', * 'action' => 'view', * 'arguments' => [ * 1,'foo' * ] * ]; * */ public function redirect($param) { $url = Router::normalize($param); header('Location:' . $url); exit; }
<?php require '../../vendor/autoload.php'; use TRW\Core\Configure; use TRW\Router\Router; Configure::load(dirname(__FILE__) . '/config.php'); Router::add('/', ['controller' => 'Pages', 'action' => 'index', 'arguments' => [1]]);