multi-module での 存在しないルーティング (404)は
dispatcher でエラーになるので、
Router に関係なく処理が止まってしまう。
以下のようにエラーを eventManager で補足して
任意の Controller/Action に飛ばしてあげる。
<?php $di['dispatcher'] = function() { $eventsManager = new \Phalcon\Events\Manager(); $eventsManager->attach('dispatch:beforeException', function($event, $dispatcher, $exception) { switch ($exception->getCode()) { case \Phalcon\Dispatcher::EXCEPTION_HANDLER_NOT_FOUND: case \Phalcon\Dispatcher::EXCEPTION_ACTION_NOT_FOUND: //任意の飛び先を指定 $dispatcher->forward(array( 'namespace' => 'Dir_project\Admin\Controllers', 'module'=>'admin', 'controller'=>'index', 'action'=>'show404' )); return false; } }); //Dispatcherの基本動作を設定 $dispatcher = new \Phalcon\Mvc\Dispatcher(); $dispatcher->setEventsManager($eventsManager); $dispatcher->setDefaultNamespace('Modules\Admin\Controllers'); return $dispatcher; };
multi-module のルーティング設定については以下を見るといいかも。
http://d.hatena.ne.jp/pospome/20140630/1404130343