2011-03-03 8 views
5

iam usando Zend Framework para construir un servicio REST web y estoy usando módulos para separar mis versiones de API, como he mencionado hereZend Regex> Ruta problema módulo

Ex: "aplicaciones/módulos/V1/controladores" , "applications/modules/v2/controllers" tienen diferentes conjuntos de acciones y funcionalidades. He mencionado mi módulo por defecto como "v1" en mi application.ini

estoy usando el cambio de contexto junto con la expresión regular de enrutamiento como he mencionado en mi here solución aceptada:

$router->addRoute(
      'route1', 
      new Zend_Controller_Router_Route_Regex(
              'api/([^-]*)/([^-]*)\.([^-]*)', 
              array(
               'controller' => 'index', 
               'action'  => 'index'), 
              array(
               1 => 'module', 
               2 => 'controller', 
               3 => 'format' 
              ) 
)); 

Ésta es mi url: http://localhost/api/v1/tags.xml

"v1" indica el módulo. Ahora, al cambiar de contexto, si la url tiene v1, va a TagsController del módulo v1. Pero si el módulo en la url es v2, que estoy recibiendo un error como:

La URL solicitada /pt/public/index.php/api/v2/tags.xml no se encontró en este servidor .

No pude entender por qué explota. ¿Es porque he puesto el módulo predeterminado como v1? No puedo cambiar el módulo en función de la url.

Y este es mi árbol de directorios:

  • aplicación
    • módulos controladores
      • v1
          • TagsController.php
      • v2
        • controladores
          • TagsController.php
  • biblioteca
+0

que debe buscar en una API REST Sistema – RobertPitt

+0

ya estoy usando un sistema API REST. He editado mi pregunta con más información. –

+0

necesita más detalles.necesitamos el árbol de directorios de la carpeta raíz de su aplicación – emaillenin

Respuesta

3

mi bien ... He descubierto la solución ... el nombre de clase del controlador en el módulo v2 debe ser "V2_TagsController", no sólo "TagsController". Gracias a Dios, que está trabajando ahora :) Ver los nombres de las clases de los controladores siguientes:

- application 
     - modules 
     - v1 
      - controllers 
        - TagsController.php (class TagsController) 
     - v2 
      - controllers 
        - TagsController.php (class V2_TagsController) 
- library 
+1

bueno que lo hayas descifrado por ti mismo – emaillenin

Cuestiones relacionadas