在我的佈局腳本中,我希望創建一個鏈接,追加[?| &] lang = en到當前的URL,使用url視圖助手。所以,我希望這種情況發生:在Zend中使用視圖助手將當前URL添加到參數
http://localhost/user/edit/1 =>http://localhost/user/edit/1?lang=en
http://localhost/index?page=2 =>http://localhost/index?page=2&lang=en
我試圖解決方案建議Zend Framework: Append query strings to current page url,直接訪問路由器,但也不工作。
我的佈局腳本包含:
<a href="<?=$this->escape($this->url(array('lang'=>'en')))?>">English</a>
如果使用默認路線,它會追加/郎/ EN,但是當使用另一條路線,沒有在所有的追加。
那麼,有什麼辦法可以在Zend中做到這一點,而我不必解析url?
編輯
對不起,我錯誤的解釋。不,我沒有製作一個自定義路由器。我剛剛添加了其他路線。我的錯。不工作的一個途徑是:
$Routes = array(
'user' => array(
'route' => 'admin/user/:mode/:id',
'defaults' => array('controller' => 'admin', 'action' => 'user', 'mode'=>'', 'id' => 0)
)
);
foreach($Routes as $k=>$v) {
$route = new Zend_Controller_Router_Route($v['route'], $v['defaults']);
$router->addRoute($k, $route);
}
你有沒有考慮加入'lang'到您的自定義路線有默認郎鹹平:
此外,根據您的評論,你可以做這樣的事情? – Crashspeeder 2011-05-17 14:08:21
是的,我考慮過了。但我不希望lang在每個請求中都被傳遞,如果不是,則恢復爲默認值。在我的引導程序中,我正在檢查是否通過了lang,如果存在,我將它存儲在會話中。此外,不必爲每條路線添加lang。 – ANisus 2011-05-18 06:34:45
最簡單的方法 - 在會話中存儲最後的請求,添加控制器/動作來切換語言。它應該重定向回到先前從會話或主頁面獲取的請求。 – Xerkus 2011-05-19 07:20:09