2012-04-20 19 views
0

當我有從經由$this->set('found_products', $data);提供結果變量控制器的操作變量將被清除。視圖products.ctp頁被分成兩個部分:CakePHP的:下一個/ privous被點擊

  1. 在頂部,在那裏用戶輸入要搜索的字符串$found_products被設置爲視圖的形式。

  2. 在它下面,分頁結果,只有當$found_products設置顯示。即if (isset($found_products))是正確的。

if (isset($found_products))是真實的,我得到的文本框中已經搜索字符串顯示在表格下面的第一頁。這個URL是myapp/controller/products

的問題,當我進入下一個頁面出現。 URL變爲myapp/controller/action/products:2,並且在myapp/controller/products下使用的變量都不存在。它看起來像移動到一個新的頁面清除所有變量..下面是我用於分頁的代碼,並沒有爲此編寫重新路由規則。我該如何解決這個問題?

 <div class="paging"> 
      <?php echo $this->Paginator->prev('<< ' . __('previous', true), array(), null, array('class'=>'disabled'));?> 
      <?php echo $this->Paginator->numbers();?>   
      <?php echo $this->Paginator->next(__('next', true) . ' >>', array(), null, array('class' => 'disabled'));?> 
     </div> 

我試圖解決這個在動作(products),並設置此項視圖中使用$ _SESSION,但我這樣做的時候,`$這個 - >分頁程序」不再奏效。

回答

1

您可以使用$這 - > Paginator->選項保存在分頁鏈接傳遞的參數。試試這個代碼

<div class="paging"> 
    <?php $this->Paginator->options(array('url' => $this->passedArgs)); ?> 
    <?php echo $this->Paginator->prev('<< ' . __('previous', true), array(), null, array('class'=>'disabled'));?> 
    <?php echo $this->Paginator->numbers();?>   
    <?php echo $this->Paginator->next(__('next', true) . ' >>', array(), null, array('class' => 'disabled'));?> 
</div> 
+0

這似乎並不奏效。在我的第一頁分頁結果中,URL是'myapp/controller/products',這個URL沒有參數。 '$ this-> passArgs'也是空的..你有另一個想法嗎? – musicliftsme 2012-04-25 20:12:19

+0

我想你忘了提到你用來提交表單的方法。如果您使用'POST',那麼此方法將無法使用,因爲搜索參數在url字符串中不可用。上述解決方案適用於'GET'方法。但是,如果你想使用'POST',那麼你必須使用JavaScript來使每個分頁鏈接提交一個表單與搜索字符串和頁碼。但恕我直言,你應該考慮使用'GET'方法,因爲它可以讓你將結果保存爲書籤。 – Vishal 2012-04-27 05:46:45

+0

嗯..你說得對。謝謝!我現在更容易使用GET。我會深入研究使用POST和稍後重定向,但我終於想出瞭如何使這項工作。我確實改變了選項數組,從你在那裏到 - >'$ this-> Paginator-> options ['url'] ['?'] = $ this-> passedArgs;',這樣下一個頁面跟隨移動到下一頁或上一頁所需的URL。 – musicliftsme 2012-04-27 23:23:40

相關問題