2012-06-25 25 views
0

我只是Zend Framework的新手。目前我正在嘗試做的是,當用戶訪問我的網站 時,他們首先會看到一個包含英語和德語兩種語言的選擇框供您選擇。如何在Zend Framework中確認後在bootstrap中重定向用戶?

只有當他們做出選擇時,瀏覽器纔會將它們重定向到該特定語言頁面的索引控制器。

所以我的問題是如何使自舉文件中的選擇框或任何一種可能的方式來做到這一點,以及如何重定向後,用戶?任何解決方案將非常感謝!

+0

我認爲這是不可能的..如果一些html需要顯示你必須在一些控制器/視圖 – coolguy

回答

0

對於這類操作,永遠不要使用引導文件(並且我正在討論Bootstrap.phpindex.php)。首先,它不會像你問的那樣工作;其次,你會讓應用程序的結構變得糟糕。

相反,你可以使用下列方法之一:

1)添加一些predispatch掛鉤,將檢查是否選擇已經通過檢查用戶的cookie製造。如果是這樣,像往常一樣繼續請求(可能設置一些Zend_Registry lang變量稍後使用),如果不是,則重定向語言選擇頁面;後者應該存儲在cookies中做出的選擇。

2)在你的路由器/ mod_rewrite的實現一個簡單的規則:當請求的URL中包含「語言部分」(http://example.com/lang/xx/...或只是http://example.com/xx/...),它會自動使用這部分所以設置lang PARAM。如果不是,請求會自動重定向到語言選擇頁面。反過來,後者則將用戶引導至語言特定的頁面,其中所有鏈接都是針對特定語言的。

在我看來,後一種方法較差,因爲用戶必須一直使用語言調整的網關。但是,您不必將這些信息存儲在Cookie中。

0

您可以製作一個插件,使用preDispatch事件查看是否選擇了語言(例如存儲在cookie或會話中),如果不是,則重定向到登錄頁面。

看這裏zend framework plug-in - predispatch() 和ZF的動作插件文檔。

這就是我強迫登錄我的應用程序。

現在在你的位置上,我真正要做的是檢測用戶的語言,使用英語的退格和在導航欄某處的開關小部件。