分页链接破坏来自post data cakephp的搜索结果

分页链接破坏来自post data cakephp的搜索结果,cakephp,post,Cakephp,Post,当我搜索我的列表时,我会通过分页得到一些结果,但当我转到第二页时,我的搜索是 破坏,因为这是一个获取请求,我通过post方法获取搜索结果 注意:为了获取搜索结果,我不想通过get请求(即查询字符串参数)提交表单,也不想在会话中存储表单数据 是否有任何方法可以获得满足上述条件的结果?您想要实现 Post/Redirect/Get(PRG)是一种web开发设计模式,它 防止某些重复表单提交,创建更直观的 用户代理(用户)的接口。PRG实现书签和 以可预测的方式刷新按钮,不会创建重复 提交表格 这在C

当我搜索我的列表时,我会通过分页得到一些结果,但当我转到第二页时,我的搜索是 破坏,因为这是一个获取请求,我通过post方法获取搜索结果

注意:为了获取搜索结果,我不想通过get请求(即查询字符串参数)提交表单,也不想在会话中存储表单数据

是否有任何方法可以获得满足上述条件的结果?

您想要实现

Post/Redirect/Get(PRG)是一种web开发设计模式,它 防止某些重复表单提交,创建更直观的 用户代理(用户)的接口。PRG实现书签和 以可预测的方式刷新按钮,不会创建重复 提交表格


这在CakePHP中非常容易做到。

仅使用“POST”调用是非常困难的。您需要将您的帖子转换为GET呼叫

我开的支票

希望这有帮助

编辑:

使用我的git回购。如果希望url查询字符串而不是命名参数:

  • 在中,构建querystring并将其传递给重定向,而不是foreach
  • 在中,从查询字符串($get)获取参数
  • 在添加
    页面
    排序
    方向
    本->分页

我还没有测试过,但是应该是这样的,我们可以用补丁来做

在以下观点中:

创建搜索表单:

$this->Form->create('Search', array('url' => array('controller' => 'controller', 'action' => 'index', substr(time(), 2,rand(1, 7) ))) );
注意:附加在表单操作末尾的随机数。这将让我们知道何时清除会话

在控制器中:

 public function index( $search = null)
 {        
    $conditions =   array(1 => 1);      
    if( !empty($this->data['Search']['keyword']) && $search)
    {
        $conditions = array('Model.field like' => $this->data['Search']['keyword'] . '%');
        // store search array in session
        $this->Session->write('conditions', $this->data['Search']);
    }           
    if ($search)
    {
        $this->request->data['Search']  =   $this->Session->read('conditions');
        $conditions = array('Model.field like' => $this->data['Search']['keyword'] . '%');    
    }
    else
    {
        $conditions =   array(1 => 1);  
        $this->Session->delete('conditions');
    }    
    $this->paginate= array('limit'=> 10, 'conditions' => $conditions);
    $lists = $this->Paginate('Model');
 }

希望您理解背后的逻辑。

谢谢您的回答,我正在调查。谢谢您的回答,我正在调查。是否可以使用querystring参数而不是命名参数?当然。。为什么不呢?但是您必须手动将页面、排序和方向传递给控制器中的分页器。您能告诉我这是怎么可能的吗?在我的回答中添加了更多的解释