¿Cómo puedo escribir Cadenas de Enrutamiento para un Subdominio en Zend Framework en una ruta de archivo INI?

StackOverflow https://stackoverflow.com/questions/1052614

Pregunta

Estoy tratando de crear un subdominio con el Zend Router y, a continuación, para cada sección en un subdominio, tales como subdomain.site.com/section/ estoy creando otra ruta y, a continuación, tratando de cadena para el subdominio de la ruta.pero no sé cómo.He leído toda la documentación que he podido encontrar y en todos los foros, pero me lleva a averiguar por mi cuenta.Hasta ahora, mis intentos solo me este error:

Error fatal capturable:Argumento 2 pasa a Zend_Controller_Router_Rewrite::addRoute() debe implementar la interfaz Zend_Controller_Router_Route_Interface, null dado, llamado en /var/local/zend/library/Zend/Controller/Router/Rewrite.php en la línea 155 y se define en la /var/local/zend/library/Zend/Controller/Router/Rewrite.php en la línea 93

con el siguiente código:

routes.b2b.type = "Zend_Controller_Router_Route_Hostname"
routes.b2b.route = "sales.sitename.com"
routes.b2b.defaults.module = b2b
routes.b2b.defaults.controller = index
routes.b2b.defaults.action = index

routes.b2b_signup.type = "Zend_Controller_Router_Route_Static"
routes.b2b_signup.route = "/signup"
routes.b2b_signup.defaults.controller = "index"
routes.b2b_signup.defaults.action   = "signup"

routes.b2b_login.type = "Zend_Controller_Router_Route_Chain"
routes.b2b_login.chain = b2b_signup

No puedo encontrar un ejemplo de cómo hacer el encadenamiento de esto con un archivo INI en cualquier lugar en la red.Toda la aplicación está escrita en un INI para el enrutamiento de configuración, así que no se puede cambiar a una matriz de la base de la configuración (o XML para que la materia), en el que el 100% de los ejemplos en internet son en.

Si yo lo pude hacer en la matriz de la forma, yo sólo puedo decir esto:

$hostnameRoute = new Zend_Controller_Router_Route_Hostname(
    'sales.sitename.com',
    array(
        'controller' => 'index',
        'module'     => 'b2b',
        'action'     => 'index'
    )
);

$hostnameRoute = new Zend_Controller_Router_Route_Static(
    '/signup',
    array(
        'controller' => 'index',
        'module'     => 'b2b',
        'action'     => 'signup'
    )
);
    $chainedRoute = new Zend_Controller_Router_Route_Chain();
    $chainedRoute->chain($b2b_signup)

¿Alguien tiene alguna idea de cómo hacer lo anterior en un archivo INI?

¿Fue útil?

Solución

Aquí básicamente lo que usted desea, en formato INI:

routes.b2b.type = "Zend_Controller_Router_Route_Hostname"
routes.b2b.route = "sales.sitename.com"
; you could specify a default module (or anything) to use for the whole 
; route chain here, like so: 
; routes.b2b.defaults.module = "default"

routes.b2b.chains.signup.type = "Zend_Controller_Router_Route_Static"
routes.b2b.chains.signup.route = "/signup"
routes.b2b.chains.signup.defaults.controller = "index"
routes.b2b.chains.signup.defaults.action = "signup"

routes.b2b.chains.anotherroute.route = "/something/:foo" ; etc, etc.
routes.b2b.chains.anotherroute.defaults.action = "foo"
routes.b2b.chains.anotherroute.defaults.controller = "index"
routes.b2b.chains.anotherroute.defaults.foo = "bar"
routes.b2b.chains.anotherroute.reqs.foo = '[a-z]+'

Esto le dará las siguientes rutas: b2b-signup, y b2b-anotherroute.

He aquí algunas notas importantes sobre la ruta de encadenamiento:

Cuando el encadenamiento de las rutas juntos, los parámetros de la parte externa de la ruta tienen una prioridad mayor que la de los parámetros del recorrido interior.Por lo tanto, si se define un controlador en el exterior y en el interior de la ruta, el controlador del exterior ruta será seleccionada.

Padre / hijo encadenado nombres de ruta, siempre están concatenados con un guión!Así que, como en el ejemplo anterior, b2b.chains.signup se convierte en una ruta con nombre b2b-signup (que puede utilizar la dirección URL de la asamblea, etc).

Usted puede mantener el encadenamiento!Las cadenas de cadenas pueden tener cadenas.

Los niños de encadenado rutas no trabajo con comodines.Ver #ZF-6654.Aquí blog que habla acerca de por qué eso no puede ser una gran cosa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top