web/lib/Zend/Controller/Router/Rewrite.php
changeset 807 877f952ae2bd
parent 207 621fa6caec0c
child 1230 68c69c656a2c
equal deleted inserted replaced
805:5e7a0fedabdf 807:877f952ae2bd
    13  * to license@zend.com so we can send you a copy immediately.
    13  * to license@zend.com so we can send you a copy immediately.
    14  *
    14  *
    15  * @category   Zend
    15  * @category   Zend
    16  * @package    Zend_Controller
    16  * @package    Zend_Controller
    17  * @subpackage Router
    17  * @subpackage Router
    18  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
    18  * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
    19  * @version    $Id: Rewrite.php 23362 2010-11-18 17:22:41Z bittarman $
    19  * @version    $Id: Rewrite.php 24593 2012-01-05 20:35:02Z matthew $
    20  * @license    http://framework.zend.com/license/new-bsd     New BSD License
    20  * @license    http://framework.zend.com/license/new-bsd     New BSD License
    21  */
    21  */
    22 
    22 
    23 /** Zend_Controller_Router_Abstract */
    23 /** Zend_Controller_Router_Abstract */
    24 require_once 'Zend/Controller/Router/Abstract.php';
    24 require_once 'Zend/Controller/Router/Abstract.php';
    29 /**
    29 /**
    30  * Ruby routing based Router.
    30  * Ruby routing based Router.
    31  *
    31  *
    32  * @package    Zend_Controller
    32  * @package    Zend_Controller
    33  * @subpackage Router
    33  * @subpackage Router
    34  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
    34  * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
    35  * @license    http://framework.zend.com/license/new-bsd     New BSD License
    35  * @license    http://framework.zend.com/license/new-bsd     New BSD License
    36  * @see        http://manuals.rubyonrails.com/read/chapter/65
    36  * @see        http://manuals.rubyonrails.com/read/chapter/65
    37  */
    37  */
    38 class Zend_Controller_Router_Rewrite extends Zend_Controller_Router_Abstract
    38 class Zend_Controller_Router_Rewrite extends Zend_Controller_Router_Abstract
    39 {
    39 {
   379             $this->addDefaultRoutes();
   379             $this->addDefaultRoutes();
   380         }
   380         }
   381 
   381 
   382         // Find the matching route
   382         // Find the matching route
   383         $routeMatched = false;
   383         $routeMatched = false;
   384         
   384 
   385         foreach (array_reverse($this->_routes, true) as $name => $route) {
   385         foreach (array_reverse($this->_routes, true) as $name => $route) {
   386             // TODO: Should be an interface method. Hack for 1.0 BC
   386             // TODO: Should be an interface method. Hack for 1.0 BC
   387             if (method_exists($route, 'isAbstract') && $route->isAbstract()) {
   387             if (method_exists($route, 'isAbstract') && $route->isAbstract()) {
   388                 continue;
   388                 continue;
   389             }
   389             }
   448      * @throws Zend_Controller_Router_Exception
   448      * @throws Zend_Controller_Router_Exception
   449      * @return string Resulting absolute URL path
   449      * @return string Resulting absolute URL path
   450      */
   450      */
   451     public function assemble($userParams, $name = null, $reset = false, $encode = true)
   451     public function assemble($userParams, $name = null, $reset = false, $encode = true)
   452     {
   452     {
       
   453         if (!is_array($userParams)) {
       
   454             require_once 'Zend/Controller/Router/Exception.php';
       
   455             throw new Zend_Controller_Router_Exception('userParams must be an array');
       
   456         }
       
   457         
   453         if ($name == null) {
   458         if ($name == null) {
   454             try {
   459             try {
   455                 $name = $this->getCurrentRouteName();
   460                 $name = $this->getCurrentRouteName();
   456             } catch (Zend_Controller_Router_Exception $e) {
   461             } catch (Zend_Controller_Router_Exception $e) {
   457                 $name = 'default';
   462                 $name = 'default';
   458             }
   463             }
   459         }
   464         }
   460 
   465 
   461         // Use UNION (+) in order to preserve numeric keys 
   466         // Use UNION (+) in order to preserve numeric keys
   462         $params = $userParams + $this->_globalParams;
   467         $params = $userParams + $this->_globalParams;
   463 
   468 
   464         $route = $this->getRoute($name);
   469         $route = $this->getRoute($name);
   465         $url   = $route->assemble($params, $reset, $encode);
   470         $url   = $route->assemble($params, $reset, $encode);
   466 
   471 
   467         if (!preg_match('|^[a-z]+://|', $url)) {
   472         if (!preg_match('|^[a-z]+://|', $url)) {
   468             $url = rtrim($this->getFrontController()->getBaseUrl(), '/') . '/' . $url;
   473             $url = rtrim($this->getFrontController()->getBaseUrl(), self::URI_DELIMITER) . self::URI_DELIMITER . $url;
   469         }
   474         }
   470 
   475 
   471         return $url;
   476         return $url;
   472     }
   477     }
   473 
   478