Example #1
0
 /**
  * 指定された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;
 }
Example #2
0
 private static function initialize()
 {
     if (self::$initialized) {
         return;
     }
     self::$url = self::explodeURI($_GET["url"]);
     self::$initialized = true;
 }
Example #3
0
 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;
 }
Example #4
0
 /**
  * Loads route configuration
  *
  * @return void
  */
 protected static function _loadRoutes()
 {
     self::$initialized = true;
     include APP . 'Config' . DS . 'routes.php';
 }
Example #5
0
 /**
  * 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);
 }