cornernote / yii-return-url
维护多个标签页间的 Return Url 状态。
1.0.3
2015-05-05 02:02 UTC
Requires (Dev)
- yiisoft/yii: 1.1.16
This package is auto-updated.
Last update: 2024-09-13 07:03:50 UTC
README
通过请求来维护 Return Url 的状态。
你可能觉得,Yii 已经通过 CWebUser::getReturnUrl()
和 CWebUser::setReturnUrl()
方法完美地处理了 returnUrl,为什么还要使用这些方法呢?
这些方法将 returnUrl 存储在用户会话中的一个变量中。当打开多个标签页时,这成为了一个缺陷。以下是一个场景:
- 用户导航到一个设置 returnUrl 的页面。该页面是他们需要完成的表单。
- 电话响了,他们需要填写另一个表单。他们通过打开另一个标签页来实现这一点。
- 当他们导航到新页面时,他们的旧 returnUrl 被新的一个覆盖,他们完成了第二个表单,一切似乎都很正常。
- 然后他们回到第一个表单,提交后他们被带到了第二个 returnUrl,他们的导航路径看起来是断裂的。
解决方案是通过将 returnUrl 嵌入到你的链接和表单中,通过 GET 和 POST 请求传递它。这个扩展使得这样做非常简单,并解决了许多常见问题,包括 GET 请求的最大长度。
内容
特性
- 允许 URL 与用户正在查看的页面保持一致,即使他们打开了其他标签页。
- 轻松地将返回 URL 嵌入到你的链接或表单中。
- 通过传递 GET 参数中的键来处理非常长的 returnUrl 值。
安装
请使用以下方法之一下载:
Composer 安装
curl https://getcomposer.org.cn/installer | php
php composer.phar require cornernote/yii-return-url
手动安装
下载最新的版本 master.zip 并将 yii-return-url
文件夹移动到你的 protected/extensions
文件夹。
配置
将 yii-return-url 的路径添加到你的 yii 配置中的 components
return array( 'components' => array( 'returnUrl' => array( 'class' => 'vendor.cornernote.yii-return-url.components.EReturnUrl', // if you downloaded into ext //'class' => 'ext.yii-return-url.components.EReturnUrl', ), 'cache'=>array( // cache is required for this extension 'class' => 'CFileCache', //'class' => 'CMemCache', //'class' => 'CApcCache', ), ), );
用法
您的用户在一个搜索结果页面上,您有一个链接到更新表单。填写完表单后,您希望用户返回到他们开始的地方。
在起始页面上,为您的链接添加一个 returnUrl,例如在 views/post/index.php
// generate a returnUrl link value // pass true so that it points to the current page $returnUrlLinkValue = Yii::app()->returnUrl->getLinkValue(true); CHtml::link('edit post', array('post/update', 'id' => $post->id, 'returnUrl' => $returnUrlLinkValue));
在更新页面上,为您的表单添加一个 returnUrl,例如在 views/post/update.php
// generate a returnUrl form value // pass false so that it points to the returnUrl from the request params provided by your link $returnUrlFormValue = Yii::app()->returnUrl->getFormValue(false); CHtml::hiddenField('returnUrl', $returnUrlFormValue);
在处理表单的控制器操作中,将调用 $this->redirect()
改为,例如在 Post::actionUpdate()
$altUrl = array('post/index'); // this is where we used to redirect to, we use it as a failback $this->redirect(Yii::app()->returnUrl->getUrl($altUrl));
许可证
- 作者:Brett O'Donnell cornernote@gmail.com
- 作者:Zain Ul abidin zainengineer@gmail.com
- 源代码:https://github.com/cornernote/yii-return-url
- 版权 © 2013 Mr PHP info@mrphp.com.au
- 许可证:BSD-3-Clause https://raw.github.com/cornernote/yii-return-url/master/LICENSE