Я пишу свой собственный маршрутизатор для проекта Zend Framework 2, расширяя Zend\Mvc\Router\RouteInterface. Маршруты должны исходить из базы данных (большой проект с сотнями страниц). Работающему маршрутизатору, очевидно, нужны только два метода: match()
и assemble()
. Матч у меня работает нормально.
А как же 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);
}
Ссылка: Пользовательская маршрутизация в Zend Framework 2 а>