访问paginator partial内的请求参数

anp*_*anp 3 seo zend-framework

  • 1)如何访问$keywordpaginator内部的搜索部分以创建搜索友好URL?显然,传递关键字$ this-> view-> paginator-> keyword不起作用.

  • 2)目前,搜索按钮的名称也作为参数发送.例如,当搜索"a"时,网址变为http://localhost/search/index/search/a/submit//page/2.有什么方法可以阻止这个?

搜索表格:


<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>
Run Code Online (Sandbox Code Playgroud)

searchController中的动作:


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;

    }
Run Code Online (Sandbox Code Playgroud)

index.phtml(查看)文件:


partialLoop('wallpaper/table-row.phtml',$ this-> paginator);?>
    <div id="page-links">

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

    </div>  
Run Code Online (Sandbox Code Playgroud)

search-paginator-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
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 9

paginationControl视图助手接受第4个参数,即参数数组,因此在您的情况下,您可以执行以下操作:

<div id="page-links">

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

</div>
Run Code Online (Sandbox Code Playgroud)

然后使用$ this-> keyword在分页内访问它.