Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ZF错误路由重写_Php_Zend Framework_Url_Zend Route - Fatal编程技术网

Php ZF错误路由重写

Php ZF错误路由重写,php,zend-framework,url,zend-route,Php,Zend Framework,Url,Zend Route,我在layout.phtml中有2个链接,在引导中有一个路由: 1. Link: echo $this->url(array('controller' => 'aktuelles', 'action' => 'index'), null, true ); // creates: http://localhost/aktuelles 2: Link echo $this->url(array('controller' => 'projekte', 'action'

我在layout.phtml中有2个链接,在引导中有一个路由:

1. Link:
echo $this->url(array('controller' => 'aktuelles', 'action' => 'index'), null, true );
// creates: http://localhost/aktuelles

2: Link
echo $this->url(array('controller' => 'projekte', 'action' => 'wohnen', 'projektId' => 26), 'projekte-galeria', false);
// creates: http://localhost/projekte/wohnen/26

Route:
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
$route = new Zend_Controller_Router_Route(  'projekte/wohnen/:projektId', 
                                            array(  
                                                    'module' => 'web',
                                                    'controller' => 'projekte',
                                                    'action' => 'wohnen',
                                                    'projektId' => null)
                                            );                  
$router->addRoute(  'projekte-galeria', $route); 
当我加载页面时,所有内容都正确显示,URL都正确

问题:只要我点击第二个链接(http://localhost/projekte/wohnen/26),第一个链接正在更改:

发件人:localhost/aktuelles

收件人:localhost/projekte/wohnen


为什么链接被更改?

尝试强制使用默认路由:而不是
null
使用
'default'
作为第一个url中的第二个参数

顺便说一句-第二个url中的部分
'controller'=>'projekte','action'=>'wohnen'
是多余的,因为您在路由中预定义了这些参数。第二个环节可以简化为:

echo $this->url(array('projektId' => 26), 'projekte-galeria', false);

请将此解决方案视为处理路线的另一种方法

谢谢,这很有效。但是为什么我必须用'default'参数而不是null来设置它呢?我认为null定义了默认路由?好吧,请参阅apidoc以获取Url视图帮助器:要使用的路由的名称。如果为空,它将使用当前路由。因此,它没有将其设置为
默认值
,而是说“使用用于路由此操作的路由”。