Como se ha dicho en los comentarios anteriores: Regístrese para el sistema de arranque-evento y añadir nuevas rutas ahí:
<?php
namespace Application;
use Zend\Module\Manager,
Zend\EventManager\StaticEventManager;
class Module
{
public function init(Manager $moduleManager)
{
$events = StaticEventManager::getInstance();
$events->attach('bootstrap', 'bootstrap', array($this, 'initCustom'), 100);
}
public function initCustom($e)
{
$app = $e->getParam('application');
$r = \Zend\Mvc\Router\Http\Segment::factory(array(
'route' => '/test',
'defaults' => array(
'controller' => 'test'
)
)
);
$app->getRouter()->addRoute('test',$r);
}
}
$app = $e->getParam('application');
qué devolver una instancia de Zend\Mvc\Application
. Eche un vistazo allí para ver qué partes adicionales puede obtener allí. El evento bootstrap
se activa antes de que se produzca el envío real.
Tenga en cuenta que las rutas de ZendFramework 1 no siempre son compatibles con las de ZendFramework 2.
actualización a los comentarios
public function initCustom($e)
{
$app = $e->getParam('application');
// Init a new router object and add your own routes only
$app->setRouter($newRouter);
}
actualización a nueva pregunta
<?php
namespace Application;
use Zend\Module\Manager,
Zend\EventManager\StaticEventManager;
class Module
{
public function init(Manager $moduleManager)
{
$events = StaticEventManager::getInstance();
$events->attach('bootstrap', 'bootstrap', array($this, 'initCustom'), 100);
}
public function initCustom($e)
{
$zendApplication = $e->getParam('application');
$customApplication = new System\Application();
$customApplication->initRoutes($zendApplication->getRouter());
// ... other init stuff of your custom application
}
}
Esto sólo ocurre en uno ZF2 módulo (llamado Application
que puede ser el único que también) . Esto no se ajusta a tus necesidades? Usted podría:
- extienden una costumbre module autoloader
- extender Zend \ MVC \ Application para su propia lógica
- compatibilizar ZF2-su código
Ha intentado acceder al router directamente (Zend \ Mvc \ Application.getRouter())? – Fge
Devuelve un objeto Zend \ Mvc \ Router \ SimpleRouteStack sin el controlador/acción/params pasado por la información de url. –
@Fge He intentado Zend \ Mvc \ PhpEnvironment \ Request.getRequestUri(), pero sin éxito. –