我现在有一个观点,管理,列出的数据项。不需要使用单独的视图来执行“编辑”和“添加”操作,而是在需要时在页面上内嵌适当的表单显示。在表单上是一个“取消”按钮,将隐藏它。的Yii - 生成URL,同时保留或删除GET参数
现在我决定什么,如果有的话,形式直列通过名为mode
GET参数显示。因此/controller/manage
将显示这些项目,而/controller/manage?mode=edit
将显示这些项目并显示正确数据项目的编辑窗体。
动作接受各种其它GET参数诸如日期间隔。
为了激活表单,我使用$_GET
中的现有参数与mode
参数拼接,生成当前操作的链接。我使用下面的一行代码:
<?php echo CHtml::link('Edit', array_merge(array('/session/manage', 'mode' => 'edit', 'id' => 6), $_GET)); ?>
为贯彻落实“取消”链接,我使用的是:
<?php echo CHtml::link('Cancel', array_diff(array_merge(array('/session/manage'), $_GET), array('edit'))); ?>
我的问题是:是否有一个更清洁的方式做到这一点?虽然这作品,它感觉像一个黑客。我还没有找到任何有关生成包含现有GET参数的URL的文档。 Yii是否提供了一种内置的方法来做我想做的事情?我是否应该重新评估对条件视图的一般方法,这可能会产生更清晰的解决方案?
我打算做类似的事情,但基于ajax,如果您在每个请求中加载页面,我都没有意见将所有项目+表单放在一个视图中。 – Asgaroth
我发现的唯一方法是交出一个return_url参数并将其解析到视图的链接中。 – schmunk
@Asgaroth我从JavaScript/AJAX“很高兴”的角度出发,即可能被禁用,核心功能不应该依赖它。我只有在应用程序完全没有它的功能后才尝试添加AJAX功能。 – LostSalad