У меня есть простая фабрика, и я хотел бы получить параметры из маршрута здесь:
<?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. Пожалуйста, помогите
С уважением
Вам нужно получить текущий объект MvcEvent, чтобы получить оттуда объект RouteMatch. Попробуйте этот код:
$application = $allservices->get('Application');
$routeMatch = $application->getMvcEvent()->getRouteMatch();
Я предполагаю, что $ allservices — менеджер сервисов высшего уровня в вашем коде.
Других решений пока нет …