當我有從經由$this->set('found_products', $data);
提供結果變量控制器的操作變量將被清除。視圖products.ctp
頁被分成兩個部分:CakePHP的:下一個/ privous被點擊
在頂部,在那裏用戶輸入要搜索的字符串
$found_products
被設置爲視圖的形式。在它下面,分頁結果,只有當
$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,但我這樣做的時候,`$這個 - >分頁程序」不再奏效。
這似乎並不奏效。在我的第一頁分頁結果中,URL是'myapp/controller/products',這個URL沒有參數。 '$ this-> passArgs'也是空的..你有另一個想法嗎? – musicliftsme 2012-04-25 20:12:19
我想你忘了提到你用來提交表單的方法。如果您使用'POST',那麼此方法將無法使用,因爲搜索參數在url字符串中不可用。上述解決方案適用於'GET'方法。但是,如果你想使用'POST',那麼你必須使用JavaScript來使每個分頁鏈接提交一個表單與搜索字符串和頁碼。但恕我直言,你應該考慮使用'GET'方法,因爲它可以讓你將結果保存爲書籤。 – Vishal 2012-04-27 05:46:45
嗯..你說得對。謝謝!我現在更容易使用GET。我會深入研究使用POST和稍後重定向,但我終於想出瞭如何使這項工作。我確實改變了選項數組,從你在那裏到 - >'$ this-> Paginator-> options ['url'] ['?'] = $ this-> passedArgs;',這樣下一個頁面跟隨移動到下一頁或上一頁所需的URL。 – musicliftsme 2012-04-27 23:23:40