Explorar el Código

Resolves #ZF-8014 Closes #ZF-8014

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@18532 44c647ce-9c0f-0410-b52a-842ac1e357ba
freak hace 16 años
padre
commit
166776051a

+ 4 - 0
library/Zend/Application/Resource/Router.php

@@ -69,6 +69,10 @@ class Zend_Application_Resource_Router
                 $this->_router->setChainNameSeparator($options['chainNameSeparator']);
             }
 
+            if (isset($options['useRequestParametersAsGlobal'])) {
+                $this->_router->useRequestParametersAsGlobal($options['useRequestParametersAsGlobal']);
+            }
+
             $this->_router->addConfig(new Zend_Config($options['routes']));
         }
         

+ 37 - 1
library/Zend/Controller/Router/Rewrite.php

@@ -72,6 +72,14 @@ class Zend_Controller_Router_Rewrite extends Zend_Controller_Router_Abstract
      * @var string
      */
     protected $_chainNameSeparator = '-';
+    
+    /**
+     * Determines if request parameters should be used as global parameters
+     * inside this router.
+     * 
+     * @var boolean
+     */
+    protected $_useCurrentParamsAsGlobal = false;
 
     /**
      * Add default routes which are used to mimic basic router behaviour
@@ -392,6 +400,13 @@ class Zend_Controller_Router_Rewrite extends Zend_Controller_Router_Abstract
             }
         }
 
+        if($this->_useCurrentParamsAsGlobal) {
+        	$params = $request->getParams();
+            foreach($params as $param => $value) {
+            	$this->setGlobalParam($param, $value);
+            }
+        }            
+        
         return $request;
 
     }
@@ -464,7 +479,7 @@ class Zend_Controller_Router_Rewrite extends Zend_Controller_Router_Abstract
     /**
      * Set the separator to use with chain names
      *
-     * @param  string $separator The separator to use
+     * @param string $separator The separator to use
      * @return Zend_Controller_Router_Rewrite
      */
     public function setChainNameSeparator($separator) {
@@ -481,4 +496,25 @@ class Zend_Controller_Router_Rewrite extends Zend_Controller_Router_Abstract
     public function getChainNameSeparator() {
         return $this->_chainNameSeparator;
     }
+    
+    /**
+     * Determines/returns whether to use the request parameters as global parameters.
+     * 
+     * @param boolean|null $use 
+     *           Null/unset when you want to retrieve the current state.
+     *           True when request parameters should be global, false otherwise
+     * @return boolean|Zend_Controller_Router_Rewrite
+     *              Returns a boolean if first param isn't set, returns an
+     *              instance of Zend_Controller_Router_Rewrite otherwise.
+     *                                                 
+     */
+    public function useRequestParametersAsGlobal($use = null) {
+    	if($use === null) {
+    		return $this->_useCurrentParamsAsGlobal;
+    	}
+    	
+    	$this->_useCurrentParamsAsGlobal = (bool) $use;
+    	
+    	return $this;
+    }
 }