2011-04-21 27 views
9

我有一個顯示大量數據的頁面,包括Zend_Paginator。 頁面操作是/po/fetch?id=someID將參數傳遞給zend分頁控件部分

我想要做的就是將「id」參數傳遞給zend paginationControl,因此分頁鏈接將如/po/fetch?id=someID&page=somePage。不幸的是,我無法找到任何解釋我可以如何將該參數傳遞給paginationControl。

我呼籲paginationControl:

echo $view->paginationControl($paginator, 'Sliding',$control, $params); 

其中$params = array('id' => someID

和我的分頁部分是:

<a href=<?= $url.'&page='.$this->first; ?> id="first"> First </a> 

<a href=<?= $url.'&page='.$this->previous; ?> id="previous">&lt; Previous</a> 

<?php 
foreach($this->pagesInRange as $page) { 
?> 
     <a href="<?= $url.'&page='.$page; ?>">.$page.</a> | ; 
<?php 
} 
?> 

<a href=<?= $url.'&page='.$this->next;?> id="next"> Next &gt;</a> 

<a href=<?= $url.'&page='.$this->last; ?> id="last"> Last </a> 

,我想$url爲指定形式。

回答

11
$this->id 
+0

它的工作!非常感謝。 – 2011-04-22 10:34:04

+0

非常歡迎:] – 2011-04-22 19:01:40

+7

夥計,簡潔+1。 ;-) – 2011-04-22 21:28:57

3

你的示例代碼並不顯示$url的填充方式,但你真的應該使用URL ViewHelper

因此,舉例來說 - 你以前的鏈接將成爲:

<a href=<?php echo $this->url(array('page' => $this->previous)); ?> id="previous">&lt; Previous</a> 

這將返回正確的URL到當前頁面與page參數設置爲$this->previous。所以如果當前網址是/users/view?foo=bar&page=5,上面的代碼會輸出/users/view?foo=bar&page=4作爲上一個鏈接。注意如何保留已經存在的任何查詢參數。

因此,如果id參數已經存在於顯示您的paginator的URL中,上面的代碼將「正常工作」。但是,如果你還需要添加id參數,你可以這樣做是這樣的:

<a href=<?php echo $this->url(array('page' => $this->previous, 'id' => $this->id)); ?> id="previous">&lt; Previous</a> 

從我們前面的例子繼續,這個代碼將輸出以下網址:/users/view?foo=bar&page=4&id={someId}

這裏是參考對於URL視圖助手文檔:

URL($ urlOptions,$名稱,$復位): 創建基於一個名爲 路由器的URL字符串。 $ urlOptions應該是 由特定路由使用的鍵/值對 的關聯數組。

最後一個註釋 - URL ViewHelper的$reset(第三個)參數將非常方便。默認行爲是保留當前請求的任何查詢參數,但$this->url(array(), 'default', true)true對於$reset參數將基本上除去您在$urlOptions中指定的參數之外的所有參數。

11

嘿試試這個,它肯定會工作.....

<a href="<?php echo $this->url(array('page' => $page,'id'=>'1')); ?>"> 
    <?php echo $page; ?> 
</a> 

這裏1給出你必須通過你想要的ID與id ....... 像

<a href="<?php echo $this->url(array('page' => $page,'id'=>$param['id'])); ?>"> 
     <?php echo $page; ?> 
    </a> 
+1

感謝兄弟爲我工作得很好 – 2011-04-22 07:39:53

+1

出於某種原因$ param在我的情況下是空的... @ vredniy的答案爲我工作。 – 2011-04-22 10:33:28

+0

上面的$ param []方法只有在設置了該值和關鍵字的數組的情況下才有效。 '$ this-> id'對你有用,因爲你有這個對象設置的單例$ – 2011-06-15 14:24:12

0

我已經經歷了同樣的問題了,所以我已經使用的代碼在下面給出的部分paginator。

我在paginator局部視圖文件(control.phtml)中創建了一個函數,或者可能會有所不同。

function queryStr($p){ 
    $params = $array = Zend_Controller_Front::getInstance()->getRequest()->getQuery(); 
    $params['page']=$p; 
    $str='?'; 
    foreach($params as $k=>$v){ 
     if($v) 
      $str .= $k.'='.$v.'&'; 
    } 
    return $str; 
} 

現在對於我使用如下代碼的鏈接。

<a href="<?php echo queryStr($page); ?>"> 

而不是

<a href="<?php echo $this->url(array('page' => $page)); ?>"> 

我相信這將有助於其他人。