+
+ protected function _mapAction($action, $path)
+ {
+ if (!array_key_exists($action, $this->_actionToPath)) {
+ $this->_actionToPath[$action] = array();
+ }
+ $this->_actionToPath[$action][] = $path;
+ return;
+ }
+
+ public function generate($values = array(), $qstring = array(), $anchor = '')
+ {
+ if (!array_key_exists('action', $values)) {
+ return parent::generate($values, $qstring, $anchor);
+ }
+
+ $action = $values['action'];
+
+ if (!array_key_exists($action, $this->_actionToPath)) {
+ return parent::generate($values, $qstring, $anchor);
+ }
+
+ $oldPaths = $this->paths;
+ $this->paths = $this->_actionToPath[$action];
+ $result = parent::generate($values, $qstring, $anchor);
+ $this->paths = $oldPaths;
+
+ return $result;
+ }