2011-05-13 10 views
3
  • 1) 어떻게 검색 freindly URL을 만들려면 부분 페이지 내에서 $keyword 검색에 액세스합니까? 분명히 $ this-> view-> paginator-> keyword does not work라는 키워드를 전달하면됩니다.부분 매개 변수 내에서 요청 매개 변수에 액세스

  • 2) 현재 검색 버튼의 이름도 param으로 전송됩니다. 예를 들어 'a'를 검색 할 때 URL은 http://localhost/search/index/search/a/submit//page/2이됩니다. 이걸 막을 방법이 있니?

검색 폼 : searchController 내부


<form id="search" method="get" action="/search"> 
         <input id="searchfield" onClick="this.value=''" type="text" name="search" value="Search wallpapers"/> 
         <input id="searchbutton" type="submit" value="" name="submit"/> 
        </form> 

작업 :


public function indexAction() 
    {   
     $keyword=$this->_request->getParam('search');   
     $alnumFilter=new Zend_Filter_Alnum(); 
     $dataModel=new Model_data();   

     $adapter=$dataModel->fetchPaginatorAdapter("title LIKE '%".$keyword."%'", ''); 
     $paginator=new Zend_Paginator($adapter); 
     $paginator->setItemCountPerPage(18); 
     $page=$this->_request->getParam('page', 1); 
     $paginator->setCurrentPageNumber($page); 

     $this->view->paginator=$paginator; 
     $this->view->keyword=$keyword; 

    } 

index.phtml (보기) 파일 :


partialLoop ('배경 화면/테이블 row.phtml', $ this-> 매기기)>
<div id="page-links"> 

     <?= $this->paginationControl($this->paginator,'Sliding','partials/search-pagination-control.phtml');?>  

    </div> 

검색 매기기-control.phtml 파일 :


if ($this->pageCount){ 
    $params=Zend_Controller_Front::getInstance()->getRequest()->getParams(); 


    if(isset($this->previous)){ 
    ?> 
     <a href="<?php echo $this->url(array_merge($params,array('page'=>$this->previous)));?>">Previous</a> 
    <?php 
    } 
    else{ 
     ?> Previous <?php 
    } 

    foreach($this->pagesInRange as $page){ 
     if($page !=$this->current){ 
      ?> 
     <a href="<?echo $this->url(array_merge($params,array('page'=>$page)));?>"><?=$page;?></a> 
     <? 
     } 
     else{ 
      echo $page; 
     } 
    } 

    if(isset($this->next)){ 
    ?> 
     <a href="<?php echo $this->url(array_merge($params,array('page'=>$this->next)));?>">Next</a> 
    <?php 
    } 
    else{ 
     ?> Next <?php 
    } 
} 

답변

9

paginationControl 뷰 도우미는 네 번째 매개 변수 인 th at는 매개 변수 배열이므로 다음과 같이 할 수 있습니다.

<div id="page-links"> 

    <?= $this->paginationControl($this->paginator,'Sliding','partials/search-pagination-control.phtml', array('keyword' => $this->keyword));?>  

</div> 

그런 다음 $ this-> keyword를 사용하여 페이지 매김 내에서 액세스 할 수 있습니다.

+1

변수가 여러 개의 다른 부분 스크립트에서 사용되는 경우 placeHolder를 사용할 수도 있습니다. http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.placeholder – zzarbi

+0

고마워, 크리스. 제 두 번째 질문에 대한 해결책을 알고 있습니까? – anp

+0

nm, 해결책을 찾았습니다. – anp

관련 문제