我已经使用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