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
}
}
변수가 여러 개의 다른 부분 스크립트에서 사용되는 경우 placeHolder를 사용할 수도 있습니다. http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.placeholder – zzarbi
고마워, 크리스. 제 두 번째 질문에 대한 해결책을 알고 있습니까? – anp
nm, 해결책을 찾았습니다. – anp