我的 CMS 中有一个激活按钮,允许用户快速切换新闻文章的活动/非活动标志。单击切换时,会向 url 发出 POST 请求/news/toggle_active/$id
,之后news_model
更新数据库中特定文章 ID 的布尔变量,控制器重定向回索引。
控制器
function toggle_active()
{
$url = $this->uri->uri_string();
$last_segment = count($this->uri->segment_array());
$id = $this->uri->segment($last_segment);
$row = $this->news_model->set_active($id);
redirect('news/index', 'refresh');
}
模型
function set_active($id)
{
$data = array(
'display_flg' => 'NOT display_flg'
);
$this->db->where('id', $id);
$this->db->update($this->tbl_news, $data);
}
第一次单击激活按钮时它可以工作,但随后的单击什么也不做。如果我关闭浏览器窗口并重新打开页面,该按钮将再次起作用,但只需单击一次。
我没有专门启用任何缓存,所以我不确定发生了什么。
如果我从toggle_active()
方法的末尾删除重定向,并输出变量的当前值display_flg
,并且 POST 到/news/toggle_active/$id
它似乎对第一个请求没有任何作用。但是,在每次后续刷新时,变量都会更改值。为什么第一次点击链接时它没有做任何事情?
尽管没有可靠的解决方案,但我在codeigniter论坛上发现了一些人似乎有类似的问题。