public function testGetDefaults() { $route = new Zend_Controller_Router_Route('users/all', array('controller' => 'ctrl', 'action' => 'act')); $values = $route->getDefaults(); $this->assertType('array', $values); $this->assertEquals('ctrl', $values['controller']); $this->assertEquals('act', $values['action']); }
/** * Builds the query part of the URL */ protected function _buildQuery() { $event = new Erfurt_Event('onBuildUrl'); $event->base = $this->_base; $event->route = $this->_route; $event->controller = $this->_controller; $event->action = $this->_action; $event->params = $this->_params; $urlCreated = $event->trigger(); if ($event->handled()) { if ($urlCreated && isset($event->url)) { return $event->url; } else { $this->_params = $event->params; $this->_controller = $event->controller; $this->_action = $event->action; $this->_route = $event->route; } } // check params foreach ($this->_params as $name => $value) { if (is_string($value) && preg_match('/\\//', $value)) { $this->_useSefUrls = false; } } $url = ''; if ($this->_route) { // checking if reset of route-defaults necessary // fixes pager usage fails on versioning pages if (count($this->_route->getDefaults()) == 0) { $resetRoute = false; } else { $resetRoute = true; } if ($this->_useSefUrls) { // let the route assemble the whole URL $url = $this->_route->assemble($this->_params, $resetRoute, true); } else { // we will assign parameters ourselves $url = $this->_route->assemble(array(), $resetRoute); $url = sprintf('%s/%s', $url, '?' . http_build_query($this->_params, '&')); } } else { if ($this->_useSefUrls) { $query = ''; $lastKey = ''; foreach ($this->_params as $key => $value) { if (is_scalar($value)) { $value = urlencode($value); $query .= "{$key}/{$value}/"; $lastKey = $key; } } // remove trailing slash $query = rtrim($query, '/'); } else { $query = '?' . http_build_query($this->_params, '&'); } $parts = array_filter(array($this->_controller, $this->_action, $query)); $url = implode('/', $parts); } // HACK: $this->_useSefUrls = true; return $this->_base . ltrim($url, '/'); }