Yii-페이지 매김
한 페이지에 표시 할 데이터가 너무 많으면 여러 페이지에 표시해야합니다. 이것은 페이지 매김이라고도합니다.
실제 페이지 매김을 표시하려면 데이터가 필요합니다.
DB 준비
Step 1− 새 데이터베이스를 생성합니다. 데이터베이스는 다음 두 가지 방법으로 준비 할 수 있습니다.
터미널에서 mysql -u root -p를 실행합니다.
CREATE DATABASE helloworld CHARACTER SET utf8 COLLATE utf8_general_ci 를 통해 새 데이터베이스를 만듭니다 .
Step 2 −에서 데이터베이스 연결을 구성합니다. config/db.php파일. 다음 구성은 현재 사용중인 시스템에 대한 것입니다.
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host = localhost;dbname = helloworld',
'username' => 'vladimir',
'password' => '12345',
'charset' => 'utf8',
];
?>
Step 3 − 루트 폴더 내부 run ./yii migrate/create test_table. 이 명령은 DB 관리를위한 데이터베이스 마이그레이션을 생성합니다. 마이그레이션 파일은migrations 프로젝트 루트의 폴더.
Step 4 − 마이그레이션 파일 (m160106_163154_test_table.php 이 경우) 이런 식으로.
<?php
use yii\db\Schema;
use yii\db\Migration;
class m160106_163154_test_table extends Migration {
public function safeUp() {
$this->createTable("user", [ "id" => Schema::TYPE_PK, "name" => Schema::TYPE_STRING, "email" => Schema::TYPE_STRING, ]); $this->batchInsert("user", ["name", "email"], [
["User1", "[email protected]"],
["User2", "[email protected]"],
["User3", "[email protected]"],
["User4", "[email protected]"],
["User5", "[email protected]"],
["User6", "[email protected]"],
["User7", "[email protected]"],
["User8", "[email protected]"],
["User9", "[email protected]"],
["User10", "[email protected]"],
["User11", "[email protected]"],
]);
}
public function safeDown() {
$this->dropTable('user');
}
}
?>
위의 마이그레이션은 user다음 필드가있는 테이블 : ID, 이름 및 이메일. 또한 몇 명의 데모 사용자를 추가합니다.
Step 5 − 프로젝트 루트 내부 run ./yii migrate 마이그레이션을 데이터베이스에 적용합니다.
Step 6 − 이제 우리는 우리를위한 모델을 만들어야합니다. user표. 간단하게하기 위해 우리는Gii코드 생성 도구. 이것을 열어url: http://localhost:8080/index.php?r=gii. 그런 다음 "모델 생성기"헤더 아래의 "시작"버튼을 클릭합니다. 테이블 이름 ( "user")과 모델 클래스 ( "MyUser")를 입력하고 "Preview"버튼을 클릭 한 다음 마지막으로 "Generate"버튼을 클릭합니다.
그만큼 MyUser model은 models 디렉토리에 나타납니다.
실제 페이지 매김
Step 1 − 추가 actionPagination 방법 SiteController.
public function actionPagination() {
//preparing the query
$query = MyUser::find();
// get the total number of users
$count = $query->count();
//creating the pagination object
$pagination = new Pagination(['totalCount' => $count, 'defaultPageSize' => 10]);
//limit the query using the pagination and retrieve the users
$models = $query->offset($pagination->offset) ->limit($pagination->limit)
->all();
return $this->render('pagination', [ 'models' => $models,
'pagination' => $pagination,
]);
}
Step 2 −라는보기 파일을 생성합니다. pagination.php 내부 views/site 폴더.
<?php
use yii\widgets\LinkPager;
?>
<?php foreach ($models as $model): ?> <?= $model->id; ?>
<?= $model->name; ?> <?= $model->email; ?>
<br/>
<?php endforeach; ?>
<?php
// display pagination
echo LinkPager::widget([
'pagination' => $pagination,
]);
?>
이제 로컬 호스트로 이동 http://localhost:8080/index.php?r=site/pagination 웹 브라우저를 통해 페이지 매김 위젯을 볼 수 있습니다.