Почему мои параметры не отображаются в URL-адресе?

Почему мои действия и параметры не отображаются в моем URL-адресе? Я использую zend 2 framework. У меня есть действие поиска и действие результатов. Ниже приведено мое действие поиска (не используя переменные при тестировании):

return $this->forward()->dispatch('Application\Controller\Index', array( 'action' => 'results', 'zip' => '12345', )); 

Маршрут – это ребенок моего домашнего маршрута.

  'results' => array( 'type' => 'segment', 'options' => array( 'route' => 'results[/:zip]', 'defaults' => array( 'controller' => 'Application\Controller\Index', 'action' => 'results', ), ), ), 

Ниже приведен родительский маршрут

 'router' => array( 'routes' => array( 'home' => array( 'type' => 'segment', 'options' => array( 'route' => '/', 'constraints' => array( 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', ), 'defaults' => array( 'controller' => 'Application\Controller\Index', 'action' => 'index', ), ), 

Я направляюсь к правильному виду, но url возвращает www.foo.com, а не www.foo.com/results/12345.

Кроме того, как я могу остановить запрос на отправку вперед? На странице результатов есть форма, и после пересылки эта форма снова отправляется (вызывая цикл).

Если вы хотите, чтобы браузер отображал новый URL-адрес, вам необходимо выполнить перенаправление HTTP, поскольку прямой плагин отправит новый контроллер в тот же запрос.

Замените прямой вызов вызовом плагина перенаправления.

 return $this->redirect()->toRoute('home/results/route/name'); 

Это также решит вашу проблему с добавлением, когда HTTP-метод все еще установлен как POST (поскольку перенаправление будет GET запросом).