2013-11-15 236 views
1

我有一個問題,在提交表單時,它似乎忽略我的路由並將我重定向到主頁。Yii路由表單動作

在我的main.php路由:

'<language\w+>/profile/<slug:[\w\-]+>' => 'profile/index', 
'<language\w+>/<action:\w+>'   => 'site/index', 

我的形式:

<form action="<?php echo Yii::app()->getBaseUrl()."/".Yii::app()->language;?> 
/profile/calendar" method="post"> 

其中輸出到

<form action="/domainname/nl/profile/calendar" method="post"> 

注:域名是存在的,因爲我在測試這個本地主機。

但是,當按下提交按鈕時,它會將我轉到家中而不是正確的頁面。只需訪問/domainname/nl/profile/calendar在瀏覽器確實工作,並給我正確的控制器。我不知道爲什麼它不在表格中工作。

在同一網站上不同的形式,我有以下的,而這又確實做工精細的路由:

<form action="/domainname/nl/profile/info" method="post"> 

這兩種形式之間的區別是,最後一個是通過創建CActiveForm小部件,第一個不是。

+1

如果你可以打開瀏覽器相同的網址,然後我不事有不對的路由,只是檢查你的代碼,你可能有地方在beforeAction或任何其它地方在POST的情況下重定向,或者你可能有一些嵌套形式在頁面上錯誤?或任何可以改變動作的JS? –

+0

@RasikhMashhadi沒有那些東西。我認爲這個問題是由於我沒有使用與我的其他表單相同的CActiveForm小部件而引起的,儘管我無法指出究竟是什麼問題。 –

+0

我從來沒有遇到過這樣的問題,我曾經使用過和沒有CActiveForm的表單有過百萬次。您需要調試每一步。檢查控制是否通過回顯到達actionInfo()並死在第一行。 –

回答

0

我設法通過切換我的手冊形式來解決問題,畢竟使用CActiveForm小部件。看來我需要由CActiveForm自動生成的yii_cs_csrf_token

0

向「/ domainname/nl/profile/info」發出簡單的發佈請求並觀察響應標題。或者你可以用tcpdump或類似的東西分析現有的請求

+0

問題已經「解決」,你可以在評論中看到。我會將它作爲答案發布,以便我可以解決這個問題。 –