上記のコメントで述べたように、ブートストラップイベントに登録し、そこに新しいルートを追加します。
<?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');
のインスタンスを返しますZend\Mvc\Application
。そこを見て、そこに到達できる追加の部品を確認してください。イベントは、実際のbootstrap
ディスパッチが発生する前に発生します。
ZendFramework1ルートはZendFramework2ルートと常に互換性があるとは限らないことに注意してください。
コメントに更新
public function initCustom($e)
{
$app = $e->getParam('application');
// Init a new router object and add your own routes only
$app->setRouter($newRouter);
}
新しい質問に更新
<?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
}
}
これは、1つのzf2モジュールでのみ発生します(名前は1つだけでもかまいApplication
ません)。これはあなたのニーズに合いませんか?あなたは出来る: