在我的Zend Framework项目中,我有一个“基础资产”模块。在此我试图创建一个符合以下路线的分页:
'route' => '/video/search[/:search][/:page_reference]',
搜索值的目的是如果用户点击创建的任何“下一页”链接,将在数据库上运行相同的查询。
page_reference 的值工作正常。 搜索的价值是我不确定如何填充分页:
<li>
<a href="<?php echo $this->url(
$this->route,
['page_reference' => $this->previous , 'search' => $this->search]
); ?>"> << </a>
</li>
以下尝试未获成功:
$this->search
$this->params()->fromRoute('search')
使用
从视图中调用分页{{ paginationControl(result, 'sliding', ['actsministries/asset/searchpaginator', 'AMBase']) }}
我应该在服务中设置搜索值吗?
答案 0 :(得分:1)
1 - 创建一个视图助手:
use Zend\View\Helper\AbstractHelper;
class Requesthelper extends AbstractHelper
{
protected $request;
//get Request
public function setRequest($request)
{
$this->request = $request;
}
public function getRequest()
{
return $this->request;
}
public function __invoke()
{
return $this->getRequest()->getServer()->get('QUERY_STRING');
}
}
2 - Module.php
public function getViewHelperConfig()
{
return array(
'invokables' => array(
),
'factories' => array(
'Requesthelper' => function($sm){
$helper = new YourModule\View\Helper\Requesthelper; \\the path to creatd view helper
$request = $sm->getServiceLocator()->get('Request');
$helper->setRequest($request);
return $helper;
}
),
);
}
3 - searchpaginator.phtml:
<?php
$parameterGet = $this->Requesthelper();
if ($parameterGet != ""){
$aParams = explode("&", $parameterGet);
foreach($aParams as $key => $value){
if(strpos($value, "page_reference=") !== false){
unset($aParams[$key]);
}
}
$parameterGet = implode("&", $aParams);
if($parameterGet != '')
$parameterGet = "&".$parameterGet;
}
?>
<?php if ($this->pageCount):?>
<div>
<ul class="pagination">
<!-- Previous page link -->
<?php if (isset($this->previous)): ?>
<li>
<a href="<?php echo $this->url($this->route); ?>?page_reference=<?php echo $this->previous.$parameterGet; ?>">
<<
</a>
</li>
<?php else: ?>
<li class="disabled">
<a href="#">
<<
</a>
</li>
<?php endif; ?>
<!-- Numbered page links -->
<?php foreach ($this->pagesInRange as $page): ?>
<?php if ($page != $this->current): ?>
<li>
<a href="<?php echo $this->url($this->route);?>?page_reference=<?php echo $page.$parameterGet; ?>">
<?php echo $page; ?>
</a>
</li>
<?php else: ?>
<li class="active">
<a href="#"><?php echo $page; ?></a>
</li>
<?php endif; ?>
<?php endforeach; ?>
<!-- Next page link -->
<?php if (isset($this->next)): ?>
<li>
<a href="<?php echo $this->url($this->route); ?>?page_reference=<?php echo $this->next.$parameterGet; ?>">
>>
</a>
</li>
<?php else: ?>
<li class="disabled">
<a href="#">
>>
</a>
</li>
<?php endif; ?>
</ul>
</div>
<?php endif; ?>
4 - index.phtml
<?php
// add at the end of the file after the table
echo $this->paginationControl(
// the paginator object
$this->paginator,
// the scrolling style
'sliding',
// the partial to use to render the control
'partial/searchpaginator.phtml',
// the route to link to when a user clicks a control link
array(
'route' => '/video/search'
)
);
?>
我希望你找到的是