/** * 指定されたURLに対応しRouterパース済のCakeRequestのインスタンスを返す * * @param string $url URL * @return CakeRequest */ protected function _getRequest($url) { Router::$initialized = false; Router::reload(); $request = new CakeRequest($url); // コンソールからのテストの場合、requestのパラメーターが想定外のものとなってしまうので調整 if (isConsole()) { $baseUrl = Configure::read('App.baseUrl'); if ($request->url === false) { $request->here = $baseUrl . '/'; } elseif (preg_match('/^' . preg_quote($request->webroot, '/') . '/', $request->here)) { $request->here = $baseUrl . '/' . preg_replace('/^' . preg_quote($request->webroot, '/') . '/', '', $request->here); } if ($baseUrl) { if (preg_match('/^\\//', $baseUrl)) { $request->base = $baseUrl; } else { $request->base = '/' . $baseUrl; } $request->webroot = $baseUrl; } else { $request->base = ''; $request->webroot = '/'; } } Router::setRequestInfo($request); $params = Router::parse($request->url); unset($params['?']); $request = Router::getRequest(true); $request->addParams($params); return $request; }
private static function initialize() { if (self::$initialized) { return; } self::$url = self::explodeURI($_GET["url"]); self::$initialized = true; }
public function testContentType() { Router::$initialized = true; $params = array('url' => array(), 'plugin' => 'nodes', 'controller' => 'nodes', 'action' => 'index', 'type' => 'blog'); $result = Router::reverse($params); $this->assertEquals('/nodes/nodes/index/type:blog', $result); Router::$routes = array(); CroogoRouter::contentType('blog'); $result = Router::reverse($params); $this->assertEquals('/blog', $result); CroogoRouter::contentType('page'); $params = array('url' => array(), 'plugin' => 'nodes', 'controller' => 'nodes', 'action' => 'index', 'type' => 'page'); $result = Router::reverse($params); $this->assertEquals('/page', $result); Router::$initialized = false; }
/** * Loads route configuration * * @return void */ protected static function _loadRoutes() { self::$initialized = true; include APP . 'Config' . DS . 'routes.php'; }
/** * test reversing parameter arrays back into strings. * * Mark the router as initialized so it doesn't auto-load routes * * @return void */ public function testRouterReverse() { Router::$initialized = true; $params = array('controller' => 'posts', 'action' => 'view', 'pass' => array(1), 'named' => array(), 'url' => array(), 'autoRender' => 1, 'bare' => 1, 'return' => 1, 'requested' => 1, '_Token' => array('key' => 'sekret')); $result = Router::reverse($params); $this->assertEquals('/posts/view/1', $result); $params = array('controller' => 'posts', 'action' => 'index', 'pass' => array(1), 'named' => array('page' => 1, 'sort' => 'Article.title', 'direction' => 'desc'), 'url' => array()); $result = Router::reverse($params); $this->assertEquals('/posts/index/1/page:1/sort:Article.title/direction:desc', $result); Router::connect('/:lang/:controller/:action/*', array(), array('lang' => '[a-z]{3}')); $params = array('lang' => 'eng', 'controller' => 'posts', 'action' => 'view', 'pass' => array(1), 'named' => array(), 'url' => array('url' => 'eng/posts/view/1')); $result = Router::reverse($params); $this->assertEquals('/eng/posts/view/1', $result); $params = array('lang' => 'eng', 'controller' => 'posts', 'action' => 'view', 'pass' => array(1), 'named' => array(), 'url' => array('url' => 'eng/posts/view/1', 'foo' => 'bar', 'baz' => 'quu'), 'paging' => array(), 'models' => array()); $result = Router::reverse($params); $this->assertEquals('/eng/posts/view/1?foo=bar&baz=quu', $result); $request = new CakeRequest('/eng/posts/view/1'); $request->addParams(array('lang' => 'eng', 'controller' => 'posts', 'action' => 'view', 'pass' => array(1), 'named' => array())); $request->query = array('url' => 'eng/posts/view/1', 'test' => 'value'); $result = Router::reverse($request); $expected = '/eng/posts/view/1?test=value'; $this->assertEquals($expected, $result); $params = array('lang' => 'eng', 'controller' => 'posts', 'action' => 'view', 'pass' => array(1), 'named' => array(), 'url' => array('url' => 'eng/posts/view/1')); $result = Router::reverse($params, true); $this->assertRegExp('/^http(s)?:\\/\\//', $result); }