我已經使用Yii::app()->user->returnUrl
但它總是將我重定向到localhost/index.php
。是否有任何特定的配置或代碼段,我必須寫其他程序?如果您有其他解決方案,請讓我知道。Yii框架中錯誤的返回url
回答
我想,你必須將其設置:
Yii::app()->user->setReturnUrl('controller/action');
@aslingga,可以請你解釋一下你想用RETURNURL做什麼?你只是試圖回到你登錄後的位置,或者你是否在別的地方使用它?
將用戶重定向瀏覽器到 登錄頁面。在重定向之前, 當前的URL(如果它不是AJAX url)將被保留在returnUrl中,以便 用戶瀏覽器可以在 成功登錄後將 重定向回當前頁面。請確保您設置了 loginUrl,以便在調用此方法後,用戶瀏覽器可以將 重定向到指定的登錄名 URL。在 調用此方法之後,當前的 請求處理將被終止。
換句話說,如果您嘗試請求的頁面需要驗證,那麼您所在頁面的URI將存儲在會話變量中。然後,一旦你登錄,它會把你帶回到那個頁面。
我建議排除故障的一種方法是做一個print_r($_SESSION);
只是爲了確保returnUrl實際上被存儲。然後,你將能夠檢查index.php是否被存儲爲returnUrl,或者你是否因爲某種原因被重定向。
查看CWebUser方法getState和setState也可能有所幫助。
我想將我的語言從默認EN_US更改爲ID_ID。像這樣url => http://www.domain.com/language/change/to/id_id。所以在我改變我的語言之後,它會重定向到我的最後一頁。你有另一種解決方案嗎?讓我知道它。 – aslingga 2010-10-27 08:47:47
@aslingga,回覆您對@addfs的評論。您可以通過CHttpRequest類方法之一獲取用戶所在的頁面。 http://www.yiiframework.com/doc/api/1.1/CHttpRequest#url-detail。哪些是php $ _SERVER變量的包裝器。 – 2010-10-27 17:25:02
我知道這個問題很老,但也許這會幫助別人,因爲我沒有找到一個體面的答案任何地方。
getReturnUrl如何工作
配置您的Yii應用程序默認返回URL需要一點點的定製。它開箱的方式是,你每次調用時指定的默認返回URL:
Yii::app()->user->getReturnUrl('site/internal');
的想法是,如果用戶訪問需要身份驗證的網頁時,他們會重定向到登錄頁面,但沒有運行
Yii::app()->user->setReturnUrl('site/visitedpage');
現在,當用戶登錄時,他們將回到他們打算去的網頁的網站之前。
雖然我喜歡該功能,但每次都必須設置默認返回URL是愚蠢的。如果您想更改默認返回網址,則必須在整個代碼中查找它。我想你可以在一個站點參數的設定值,並調用
Yii::app()->user->getReturnUrl(Yii::app()->params['defaultReturnUrl']);
我不認爲我有必要解釋一下爲什麼該解決方案是煩人了。
我的解決方案
所以當getReturnUrl被稱爲不帶任何參數,它返回要麼「的index.php」或只是「/」。這在某些情況下很好,但並非總是如此。這是更好的海事組織。
首先,延長CWebUser類,並添加以下額外
class WebUser extends CWebUser {
// default return URL property
public defaultReturnUrl;
// override the getReturnUrl method
public function getReturnUrl($defaultUrl=NULL) {
if ($defaultUrl === NULL) {
$defaultReturnUrl = $this->defaultReturnUrl;
}
else {
$defaultReturnUrl = CHtml::normalizeUrl($defaultUrl);
}
return $this->getState('__returnUrl',$defaultReturnUrl);
}
}
現在,讓我們添加一些項目到用戶組件陣列。
'user' => array(
'class' => 'WebUser',
'defaultReturnUrl' => 'site/internal'
)
這不僅允許你設置在配置默認返回URL,而且還保持設置不同的默認返回URL,並使用setReturnUrl功能的能力。
- 1. Yii框架:CPhpAuthManager錯誤
- 2. Yii框架CDBCommand錯誤
- 3. 錯誤500 Yii框架PHP
- 4. Yii返回exception.CHttpException.404錯誤
- 5. 在YII框架中登錄錯誤
- 6. URL與Yii框架重寫
- 7. Yii框架:錯誤的創建網址
- 8. yii框架中的url管理流程
- 9. PHP MYSQL ajax Yii框架登錄錯誤
- 10. 語法錯誤意外t_double_arrow yii框架
- 11. Yii框架 - beginWidget無回聲
- 12. 離子框架中的URL錯誤
- 13. SPWeb.Url返回錯誤的URL
- 14. 返回頁面中Yii框架的更新表單頁面
- 15. Yii CDbCommand queryAll()返回錯誤結果
- 16. Yii findByAttributes覆蓋函數返回錯誤
- 17. GET(URL)返回錯誤
- 18. findAllByAttributes在Yii框架中不返回任何值
- 19. 資產在生產中返回404(Not Found)錯誤Yii2框架中的錯誤
- 20. Yii框架 - 更改模塊URL
- 21. YII框架用戶友好URL
- 22. Yii框架 - 從URL到路由
- 23. Wilcard在URL模式Yii框架
- 24. Yii框架中的Amazon SDK
- 25. yii框架中的sqlite
- 26. yii框架中的主題
- 27. Yii框架中的資產
- 28. Yii框架中的模型?
- 29. 在Yii框架中獲取sql server數據庫的錯誤
- 30. 錯誤 - 調用Yii框架中的null成員函數validatePassword()
但我不清楚用戶正在訪問的當前網址。 – aslingga 2010-10-27 08:49:47