如何在contollerFactory zend 2中获取参数?

时间:2014-11-08 14:33:39

标签: php zend-framework zend-framework2 factory zend-route

我有简单的工厂,我想从路线上获得参数:

<?php
namespace Webb\Factory;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
use Webb\Controller\IndexController;



class IndexControllerFactory implements FactoryInterface
{
public function createService(ServiceLocatorInterface $serviceLocator){

    $allservices = $serviceLocator->getServiceLocator();
    $sm = $allservices->get('ServiceManager');


    $IndexController = new IndexController();
    $IndexController->setProjectTable($sm->get('project-table'));
    $IndexController->setCategories($sm->get('categories-table'));
    $IndexController->setPages($sm->get('pages-table'));
    $IndexController->setUrls($sm->get('urls-table'));

    return $IndexController;
}

}

我想做这样的事情:

$router = $serviceLocator->get('router');
    $request = $serviceLocator->get('request');

    // Get the router match
    $routerMatch = $router->match($request);
    $urle = $routerMatch->getParam("url1");

    echo $urle;

但它返回错误 Zend \ Mvc \ Controller \ ControllerManager :: get无法获取或创建路由器实例

我是zend的新手2.请帮忙

此致

1 个答案:

答案 0 :(得分:0)

您需要获取当前的MvcEvent对象才能从那里获取RouteMatch对象。试试这段代码:

$application = $allservices->get('Application');
$routeMatch = $application->getMvcEvent()->getRouteMatch();

我认为$ allservices是您代码中的顶级服务管理器。