0
我在ZF2中有路由問題。我想爲我製作的軟件製作動態路由。
例如: 這是網址:http://localhost:8080/application/index.json/
這是我module.config(路由器部分):ZF2動態路由
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'Application\Controller\Index',
),
),
),
'restful' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/:module/[:controller[/:action][.:formatter][/:id]]',
'constraints' => array(
'module' => '[a-zA-Z][a-zA-Z0-9_-]*',
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'formatter' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[a-zA-Z0-9_-]*'
),
),
),
),
),
一切工作正常,但是當我創造新的控制器,必須將其添加到控制器['invokables']在module.config中的設置。
'controllers' => array(
'invokables' => array(
'index' => 'Application\Controller\IndexController',
'cloud' => 'Application\Controller\CloudController',
),
),
所以,問題是,如何將控制器自動化[「invokables」]動態地處理請求,沒有描述它的每一個控制器。
我嘗試這樣做,但你的代碼後,我有我做後處理功能:$迪= $ E->了getTarget() - > getServiceLocator() - >獲取( '迪'); 如果使用你的路由,我得到這個錯誤:調用一個非對象的成員函數get()。經過一些調試,我發現「$ e-> getTarget() - > getServiceLocator()」是NULL。 – pavkatar
然後,您應該將服務定位器添加到控制器。查看我的更新。 – akond
@akond因此,只有配置才能實現這一點?以及爲什麼使用:controller參數進行路由在skelleton應用程序應用程序模塊(但不是任何其他模塊)上工作? https://github.com/zendframework/ZendSkeletonApplication/blob/master/module/Application/config/module.config.php –