$ GET 변수로 select-> order로 데이터를 정렬하는 프로젝트를 추가했습니다. 그러나 페이지를 통해 페이지를 탐색 할 때 물론이 변수는 다음 페이지로 넘어 가지 않습니다. 이 변수를 전달하고 paginator와 함께 사용하는 가장 좋은 방법은 무엇입니까?
컨트롤러 :
public function indexAction()
{
$sortForm = new \Records\Form\SortingForm();
$field = 'date';
$order = 'desc';
$request = $this->getRequest();
if ($request->isGet()){
$sortForm->setValidationGroup(array('field', 'order'));
$sortData = $request->getQuery()->toArray();
$sortForm->setData($sortData);
if($sortForm->isValid()) {
$sortForm->getData($sortData);
$field = (string) $this->params()->fromQuery('field', 'date');
$order = (string) $this->params()->fromQuery('order', 'desc');
}
}
$query = $this->getRecordsTable()->fetchAll($field, $order);
$paginator = new Paginator\Paginator(new Paginator\Adapter\Iterator($query));
$paginator->setCurrentPageNumber($this->params()->fromRoute('page', 1));
$paginator->setItemCountPerPage(25);
$vm = new ViewModel(array('records' => $paginator));
모델 :
public function fetchAll($field, $order)
{
$this->field = $field;
$this->order = $order;
$resultSet = $this->tableGateway->select(function (Select $select) {
$select->columns(array('date', 'name', 'email', 'homepage', 'text', 'image', 'file'));
$select->order($this->field.' '.$this->order);
});
$resultSet->buffer();
$resultSet->next();
return $resultSet;
}
형태 :
public function __construct($name = null)
{
parent::__construct('records');
$this->setAttribute('method', 'get');
$this->add(array(
'name' => 'field',
'required' => false,
'type' => 'Zend\Form\Element\Select',
'options' => array(
'label' => 'Sort by: ',
'value_options' => array(
'date' => 'Date',
'email' => 'E-mail',
'name' => 'Username',
),
)));
$this->add(array(
'name' => 'order',
'required' => false,
'type' => 'Zend\Form\Element\Select',
'options' => array(
'value_options' => array(
'asc' => 'ascending',
'desc' => 'descending',
),
)));
$this->add(array(
'name' => 'submit',
'attributes' => array(
'type' => 'submit',
'value' => 'Go',
'id' => 'submitbutton',
),
));
}
매기기보기 :
<!-- Numbered page links -->
<?php foreach ($this->pagesInRange as $page): ?>
<?php if ($page != $this->current): ?>
<a href="<?php echo $this->url($this->route, array('page' => $page)); ?>">
<?php echo $page; ?>
</a> |
<?php else: ?>
<?php echo $page; ?> |
<?php endif; ?>
<?php endforeach; ?>
,
그리고 다른 하나 : get-variables를 전달할 때 쿼리 문자열은 다음과 같습니다. http://guest-book.me/page/7?field=date&order=asc& submit = go 어떻게 값을 보내지 않고 보낼 수 있습니까? => 값?
도움 주셔서 감사합니다. :)
그리고 또 다른 하나 : 'name'엘리먼트를 생략하십시오. – Waygood
여기를보십시오 http://stackoverflow.com/questions/8852374/zend-paginator-make-other-links- url? rq = 1 – Waygood
@Waygood, 답변 해 주셔서 감사합니다. Zend \ Form \ Fieldset :: add : 제공된 요소 또는 fieldset의 이름이 지정되지 않고 플래그에 제공된 이름이 없습니다. 'name'을 생략하면됩니다. 링크가 도움이 안되면 ... – Igor