반응형
들어가기
이 예제를 구현하기 위해서는 페이지네이션 처리를 먼저 구현하셔야 합니다. 참고가 필요하시면 아래 링크를 참고하시면 됩니다.
https://lifefun.tistory.com/70
1. 페이지네이션 뷰 파일 생성
app\Views\Pagers\ 폴더에 cus_pager.php 파일을 생성합니다. 이 파일에 페이지네이션 뷰를 생성할 겁니다.
이 페이지네이션을 정성적으로 호출을 하려면 부트스트랩5를 사용하셔야 합니다.
<?php $pager->setSurroundCount(2) ?>
<nav aria-label="Page navigation">
<ul class="pagination">
<?php if ($pager->hasPrevious()) : ?>
<li class="page-item" >
<a class="page-link" href="<?= $pager->getFirst() ?>" aria-label="<?= lang('Pager.first') ?>">
<span aria-hidden="true"><?= lang('Pager.first') ?></span>
</a>
</li>
<li class="page-item">
<a class="page-link" href="<?= $pager->getPrevious() ?>" aria-label="<?= lang('Pager.previous') ?>">
<span aria-hidden="true"><?= lang('Pager.previous') ?></span>
</a>
</li>
<?php endif ?>
<?php foreach ($pager->links() as $link) : ?>
<li <?= $link['active'] ? 'class="page-item active"' : 'page-item' ?>>
<a class="page-link" href="<?= $link['uri'] ?>">
<?= $link['title'] ?>
</a>
</li>
<?php endforeach ?>
<?php if ($pager->hasNext()) : ?>
<li class="page-item">
<a class="page-link" href="<?= $pager->getNext() ?>" aria-label="<?= lang('Pager.next') ?>">
<span aria-hidden="true"><?= lang('Pager.next') ?></span>
</a>
</li>
<li class="page-item">
<a class="page-link" href="<?= $pager->getLast() ?>" aria-label="<?= lang('Pager.last') ?>">
<span aria-hidden="true"><?= lang('Pager.last') ?></span>
</a>
</li>
<?php endif ?>
</ul>
</nav>
페이지네이션 뷰 템플릿 파일 다운로드 (부트스트랩5 페이지네이션) :
2. Pager 설정 ( app\Config\Pager.php )
'cus_pager' => 'App\Views\Pagers\cus_pager' 아래 코드를 추가합니다.
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class Pager extends BaseConfig
{
/**
* --------------------------------------------------------------------------
* Templates
* --------------------------------------------------------------------------
*
* Pagination links are rendered out using views to configure their
* appearance. This array contains aliases and the view names to
* use when rendering the links.
*
* Within each view, the Pager object will be available as $pager,
* and the desired group as $pagerGroup;
*
* @var array<string, string>
*/
public $templates = [
'default_full' => 'CodeIgniter\Pager\Views\default_full',
'default_simple' => 'CodeIgniter\Pager\Views\default_simple',
'default_head' => 'CodeIgniter\Pager\Views\default_head',
'cus_pager' => 'App\Views\Pagers\cus_pager'
];
/**
* --------------------------------------------------------------------------
* Items Per Page
* --------------------------------------------------------------------------
*
* The default number of results shown in a single page.
*
* @var int
*/
public $perPage = 20;
}
앞서 구현한 BoardModel.php파일에서 paginate 메소드에 'bdGroup'인자값을 추가합니다.
<?php
namespace App\Models;
use CodeIgniter\Model;
class BoardModel extends Model
{
protected $table = 'ss_board';
protected $primaryKey = 'ss_board_id';
public function get_all_data( int $cnt = 20 )
{
$this->builder()
->orderBy('ss_board_id','DESC');
return [
'data' => $this->paginate($cnt,'bdGroup'),
'pager' => $this->pager
];
}
}
$pager->links() 메소드를 호출하는 페이지에서 미리 만들어둔 cus_pager.php 템플릿을 호출합니다.
변경 : <?php echo $pager->links('bdGroup','cus_pager'); ?>
<div class="container">
<div class="row mt-2">
<div class="col-md-3">
<div class="input-group mb-3">
<input type="text" class="form-control" placeholder="게시글 검색" aria-describedby="button-addon2">
<button class="btn btn-outline-secondary" type="button" id="button-addon2">검색</button>
</div>
</div>
<div class="col-6 col-md-9 text-end" >
<button type="button" class="btn btn-outline-secondary">글쓰기</button>
</div>
</div>
<table class="table table-hover table-sm">
<thead>
<tr>
<th scope="col">제목</td>
<th scope="col">글쓴이</td>
<th scope="col">등록일시</td>
<th scope="col">수정일시</td>
</tr>
</thead>
<tbody>
<?php foreach( $board_data as $data ): ?>
<tr>
<td><?=$data['subject']?></td>
<td><?=$data['writer']?></td>
<td><?=$data['reg_dt']?></td>
<td><?=$data['up_dt']?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php echo $pager->links('bdGroup','cus_pager'); ?>
</div>
앞서 구현한 페이지네이션에서 커스텀하게 구현한 페이지네이션이 정상적으로 출력됩니다.
페이지네이션 뷰 템플릿 파일 다운로드 (부트스트랩5 페이지네이션) :
반응형
'소프트웨어 개발 > PHP' 카테고리의 다른 글
[코드이그나이터4] 커스텀 검증(Validation) 모듈 만들기 (0) | 2022.02.13 |
---|---|
[코드이그나이터4] 데이터를 1개의 행으로 가져오고 싶을 경우 getRow(); (0) | 2022.02.13 |
[코드이그나이터4] 페이지네이션, 페이징처리 구현 - 모델에서 구현 (0) | 2022.02.12 |
[코드이그나이터4] 뷰 페이지 view 레이아웃 잡기 (0) | 2022.02.12 |
[코드이그나이터4] CodeIgniter\Database\BaseResult::getResult() as shown below: (0) | 2022.02.10 |
댓글