为什么我的动作和参数不会显示在我的网址中?我正在使用zend 2框架。我有搜索操作和结果操作。下面是我的搜索操作(我测试时不使用变量):
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',
),
),
我正在路由到正确的视图,但网址返回www.foo.com而不是www.foo.com/results/12345。
另外如何停止前锋的发布请求?结果页面上有一个表单,在转发之后,此表单再次提交(导致循环)。
答案 0 :(得分:1)
如果您希望浏览器显示新的URL,则需要执行HTTP重定向,因为转发插件将在相同的请求中分派到新控制器。
通过调用重定向插件替换前转呼叫。
return $this->redirect()->toRoute('home/results/route/name');
这也将解决您仍然将HTTP方法设置为POST的添加问题(因为重定向将是GET
请求)。