I resolved the issue with routes but its not complete since it still
forces you to prepend the module name to the class

$front = Catalog_Controller_Front::getInstance();
$router = $front->getRouter();
$router->addRoute('1.0', new
Zend_Controller_Router_Route('1.0/:controller',array('module'=>'default')));
$router->addRoute('2.0', new
Zend_Controller_Router_Route('2.0/:controller',array('module'=>'name1')));
$router->addRoute('2.0', new
Zend_Controller_Router_Route('2.0/:controller',array('module'=>'name2')));
$front->addModuleDirectory('../application/');
$front->dispatch();

I think I'll override  _formatName as you suggested

On Fri, Apr 4, 2008 at 8:05 PM, Matthew Weier O'Phinney
<[EMAIL PROTECTED]> wrote:
> -- Ovidiu EFTIMIE <[EMAIL PROTECTED]> wrote
>  (on Friday, 04 April 2008, 07:42 PM +0300):
>
>
> > I have a question concernig the usage of numbers as directory names for 
> > modules.
>  > For example my application structure requires me to have urls like this
>  > http://servername/1.0/controller/action
>  > http://servername/1.1/controller/action
>  > http://servername/1.2/controller/action
>  > and I thought that this coud be managed by different modules respectively
>  > application/
>  >        |---1.0
>  >                |----controllers
>  > .........................................
>  >        |---1.5
>  >                |----controllers
>  >                |----models
>  >                |----views
>  > The problem is that when I specify in the bootstrap file the
>  > application module directory addModuleDirectory('../application') and
>  > try to go to a URL like this http://servername/1.3/news ZendFramework
>  > tries to locate a class 13_NewsController which obviously it's not a
>  > correct name for a class.
>  >
>  > Does anyone have any ideea how this isse can be handeled ?
>
>  Zend_Controller_Dispatch_Abstract::_formatName() looks like this:
>
>     protected function _formatName($unformatted, $isAction = false)
>     {
>         // preserve directories
>         if (!$isAction) {
>             $segments = explode($this->getPathDelimiter(), $unformatted);
>         } else {
>             $segments = (array) $unformatted;
>         }
>
>         foreach ($segments as $key => $segment) {
>             $segment        = str_replace($this->getWordDelimiter(), ' ', 
> strtolower($segment));
>             $segment        = preg_replace('/[^a-z0-9 ]/', '', $segment);
>             $segments[$key] = str_replace(' ', '', ucwords($segment));
>         }
>
>         return implode('_', $segments);
>     }
>
>  I'd suggest extending Zend_Controller_Dispatcher_Standard with your own
>  subclass, and overriding that particular method -- in particular,
>  changing the regex used in the segments loop to include the '.'
>  character.
>
>  You can then register your custom dispatcher with the front controller
>  using Zend_Controller_Front::setDispatcher().
>
>  --
>  Matthew Weier O'Phinney
>  PHP Developer            | [EMAIL PROTECTED]
>  Zend - The PHP Company   | http://www.zend.com/
>

Reply via email to