Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 防止干净的Codeigniter 2.1.1上的页面/控制器/方法缓存_Php_Codeigniter_Codeigniter 2 - Fatal编程技术网

Php 防止干净的Codeigniter 2.1.1上的页面/控制器/方法缓存

Php 防止干净的Codeigniter 2.1.1上的页面/控制器/方法缓存,php,codeigniter,codeigniter-2,Php,Codeigniter,Codeigniter 2,我的CMS中有一个激活按钮,允许用户快速切换新闻文章的活动/非活动标志。单击切换按钮后,会向url/news/toggle_active/$id发出POST请求,之后news_model会更新数据库中特定文章id的布尔变量,控制器会重定向回索引 控制器 模型 第一次单击激活按钮时,它会工作,但随后的单击不会起任何作用。如果关闭浏览器窗口并重新打开页面,按钮将再次工作,但只需单击一次 我还没有专门启用任何缓存,所以我不确定发生了什么 如果我从toggle\u active()方法的末尾删除重定向,

我的CMS中有一个激活按钮,允许用户快速切换新闻文章的活动/非活动标志。单击切换按钮后,会向url
/news/toggle_active/$id
发出POST请求,之后
news_model
会更新数据库中特定文章id的布尔变量,控制器会重定向回索引

控制器 模型 第一次单击激活按钮时,它会工作,但随后的单击不会起任何作用。如果关闭浏览器窗口并重新打开页面,按钮将再次工作,但只需单击一次

我还没有专门启用任何缓存,所以我不确定发生了什么

如果我从
toggle\u active()
方法的末尾删除重定向,并输出
display\u flg
变量的当前值,然后发送到
/news/toggle\u active/$id
,则在第一次请求时它似乎什么也不做。但是,在每次后续刷新时,变量都会更改值。为什么第一次点击链接时它什么都不做


我在论坛上发现一些人似乎也有类似的问题,尽管没有解决方案。

我认为这最终不是缓存问题。为了解决这个问题,我做了两个主要的修改

首先,在重定向之前,我不会检查数据库请求是否成功

我还重新编写了models
set\u active()
方法。将SET子句作为数组传递给update函数的第二个参数无效。我需要使用set functions第三个参数来阻止查询转义查询的
NOT
部分

我调整了我的功能如下:

控制器 模型
您是否在其他浏览器中尝试过此功能?这不是我在CI中遇到过的问题,即使启用了缓存。在Chrome和Firefox中也存在同样的问题,不知道问题是什么。如果在
redirect('news')
之前从index()方法(构建新闻文章列表的代码)粘贴代码,效果会很好。但是我不应该在
toggle\u active()
方法中重建索引,我应该这样做吗?当我重定向到它时,它应该会这样做……如果可以,请注释掉
toggle\u active
方法上的任何安全性,并将包含任何段的url粘贴到其中,然后单击提交。然后,它会告诉您/我们正在发生什么类型的重定向,以及“在”重定向之前的响应。希望这会有帮助?还有。。。仅供参考,
toggle\u active
可以重写为-我不确定您是否出于任何特殊原因使用这些片段,但假设您的url是
http://www.domain.com/controller/toggle_active/1
然后您可以使用函数参数。谢谢您对函数参数的建议,我不知道!我在标题中找不到任何奇怪的地方,今天早上我找到了解决这个问题的方法。我将很快提交答复。
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);
}
function show_toggle($id)
{
    if($this->news_model->set_active($id)) 
    {
        redirect('news/index', 'refresh');
    }
}
function set_active($id)
{
    $this->db->where('id', $id);
    $this->db->set('display_flg', 'NOT display_flg', FALSE);
    $query = $this->db->update($this->tbl_news);    

    return $query;
}