我有简单的工厂,我想从路线上获得参数:
<?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.请帮忙
此致
答案 0 :(得分:0)
您需要获取当前的MvcEvent对象才能从那里获取RouteMatch对象。试试这段代码:
$application = $allservices->get('Application');
$routeMatch = $application->getMvcEvent()->getRouteMatch();
我认为$ allservices是您代码中的顶级服务管理器。