Я пишу свой собственный маршрутизатор для проекта Zend Framework 2, расширяя Zend\Mvc\Router\RouteInterface. Маршруты должны поступать из базы данных (большой проект с сотнями страниц). Рабочий маршрутизатор, очевидно, нуждается только в двух методах: match()
и assemble()
. В матче я работал нормально.Что может быть результатом Zend Mvc Router RouteInterface :: assembly() в ZF2
Но как насчет assemble()
? Что должен вернуть этот метод? Может ли это только вернуть базовый путь приложения?
Вот что одна из внутренних маршрутизаторов (Zend\Mvc\Router\SimpleRouteStack) из ZF2 делает:
/**
* assemble(): defined by RouteInterface interface.
*
* @see \Zend\Mvc\Router\RouteInterface::assemble()
* @param array $params
* @param array $options
* @return mixed
* @throws Exception\InvalidArgumentException
* @throws Exception\RuntimeException
*/
public function assemble(array $params = array(), array $options = array())
{
if (!isset($options['name'])) {
throw new Exception\InvalidArgumentException('Missing "name" option');
}
$route = $this->routes->get($options['name']);
if (!$route) {
throw new Exception\RuntimeException(sprintf('Route with name "%s" not found', $options['name']));
}
unset($options['name']);
return $route->assemble(array_merge($this->defaultParams, $params), $options);
}
Ссылка: Custom Routing in Zend Framework 2