2010-06-16 25 views
2

我有一個使用錨名稱的表單,因爲它的動作是這樣的,當表單被提交時,它會直接返回到表單(例如'www.domain.com/page #聯繫表)。這個想法是,如果有任何錯誤,那麼它會直接進入表單(接近頁面底部),以便您可以看到錯誤並繼續填寫表單。如果表單有效,我希望它重定向到另一個頁面(例如www.domain.com/another-page)。問題是重定向url仍然在url中有錨文本(在上面的例子中是www.domain.com/another-page#contact-form)。Zend刪除url重定向中的錨文本

我使用

$this->_helper->redirector->goToRouteAndExit(array(), 'another-page', true); 

來轉到另一個頁面的路線。我曾嘗試專門設置網址,但這並沒有解決它。

如何重定向到其他頁面並從url中移除該錨文本?

+0

我剛剛瞭解到,這隻會影響Firefox和Opera。 IE瀏覽器和Safari瀏覽器(並且自Safari發佈以來,我假設Chrome也是如此)重定向正確。 那麼,關於如何擺脫從FF和Opera的錨文本沒有使用Javascript的任何想法? – 2010-06-16 09:57:19

回答

1

我會假設你可以這樣做:

if ($this->_request->isPost()) { 
    if ($formObject->isValid($this->_request->getPost())) { 
     // do something 
     $this->_redirect('/my/new/url/'); 
    } else { // if error 
     // do something else 
     $this->_redirect('/my/original/url/#anchor); 
    } 
} 

有什麼用處?

編輯:假設你正在使用的Zend_Form/Zend_Dojo_Form

+0

我正在使用Zend_Form。當我嘗試做重定向時,我失去了表單數據。如果你曾經輸入過一個表單並且得到的信息是錯誤的,那麼大多數時候它會再次顯示錶單和你的數據,就像我做重定向時它只顯示錶單一樣 - 當你剛剛花了5 (ish)分鐘填寫這個大屁股形式=( 雖然我已經做了一個解決方法,如果表單有效,那麼它會隱藏表單並回顯成功消息,所以用戶有某種反饋解釋表單的形式 – 2010-06-25 09:29:37

+0

我從來沒有嘗試過將表單動作編碼爲表單動作,但是在聲明表單時,可以嘗試包含該表單,我假設如果用戶完成表單,在頁面的那個區域需要重定向,最後刪除上面寫的重定向語句,如果你的控制器無效的話 其他選項可能包括e使用會話來存儲表單數據,但如果可能的話,我會盡量避免這種複雜性。 – lintal 2010-06-25 10:48:40