|
本帖最后由 ^淡如清风 于 2014-11-3 15:07 编辑
使用CI开发程序时,经常会遇到删除记录的操作。
这时如果是在分页下删除,且删除后必须返回当前分页,而不是跳到分页的首页时如何做呢?
例如:
列表控制器:/application/controllers/article.php index()方法
模板文件:/application/views/article/index.php
删除操作:/application/controllers/article.php dodel()方法
我们在如下链接的操作页面删除数据
当前页面URL:
- /index.php/article/index?page=10&title=查询的关键词
复制代码
对应的删除链接为:
- /index.php/article/dodel?id=102
- /index.php/article/dodel?id=102
复制代码
如何使得执行删除操作后,跳转到(redirect)
- /index.php/article/index?page=10&title=查询的关键词
复制代码
方法一:
删除链接附带参数,实现删除后跳转
1、模板文件 构造删除链接
模板文件:/application/views/article/index.php
HTML复制代码 <?php
foreach ($articles as $arc) {
//删除url(附加的参数)
$query_string = $_SERVER['QUERY_STRING'] ? '&' . $_SERVER['QUERY_STRING'] : '';
?>
<a href="<?php echo site_url('article/dodel?id=' . $arc['id'] . $query_string); ?>">删除 </a>
<?php
}
?> 复制代码
2、点击删除后控制器处理
PHP复制代码 /**
* 删除招标数据
*/
public function dodel ()
{
TODO :数据库删除
//跳转
parse_str($_SERVER['QUERY_STRING'], $output);
if (isset($output['id'])) unset($output['id']);
$query_string = http_build_query($output);
redirect ('article/index?' . $query_string);
} 复制代码
方法二:
进入列表页时,使用CI的SESSION保存跳转参数
列表控制器:/application/controllers/article.php
1、index()方法
PHP复制代码 /**
* 文章列表
*/
public function index()
{
$this->load->library('session');
//记录删除跳转查询字符串
$dodel_query_string = $_SERVER['QUERY_STRING'] ? '&' . $_SERVER['QUERY_STRING'] : '';
$this->session->set_userdata('dodel_query_string', $dodel_query_string);
//TODO:其他逻辑,例如获取文章列表
//$data['articles'] = ....;
$this->load->view('article/index', $data);
} 复制代码
2、删除方法 dodel()
PHP复制代码 /**
* 文章删除操作
*/
public function index ()
{
//TODO:数据库删除操作
$this->load->library('session');
parse_str($this->session->userdata('dodel_query_string'), $output);
if (isset($output['id'])) unset($output['id']);
$query_string = http_build_query($output);
redirect ('admin/zhaobiao/index?' . $query_string);
} 复制代码
继续补充1:可以把删除操作那块的跳转的代码转换成函数写到url_helper里面去,要用时再调用!
看不明白尽管提问,这几天我会时不时回来查看下每个楼层的回复。
有更好的方法,欢迎以回复的方式或另开帖的方式发布。我同时整理到该帖子下 |
评分
-
查看全部评分
|