2012-01-25 69 views
0

我有我的layout.phtml 2個環節和引導路線:ZF走錯路線重寫

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://本地主機/ projekte/WOHNEN/26),第一連桿被改變:

從:本地主機/ aktuelles

到:localhost/projekte/wohnen

爲什麼鏈接改變了?

回答

2

嘗試強制使用默認路由:而不是null使用'default'作爲第一個url中的第二個參數。

順便說一句 - 在第二url部分'controller' => 'projekte', 'action' => 'wohnen'是多餘的,因爲預先設定的在路線這些參數。第二個環節可以通過簡化這樣的:

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

謝謝,這個作品。但爲什麼我必須使用'default'參數而不是null來設置它?我以爲null定義了默認路由? – Flexer

+0

那麼,請查看Url View Helper的apidoc:_要使用的路由的名稱。如果爲null,它將使用當前的Route_。因此,它不會將其設置爲「default」,而是表示「使用用於路由此操作的路由」。 –