
Pagination یا صفحه بندی در فریمورک Yii
وقتی برای نمایش در یک صفحه، اطلاعات زیادی دارید، باید آن را در چندین صفحه نمایش دهید. این عمل pagination یا صفحه بندی نامیده می شود.
ما برای نمایش pagination در action نیاز به دیتا داریم.
آماده سازی DB
مرحله 1 – یک database جدید بسازید. database را می توان به دو روش زیر مهیا نمود:
- در ترمینال دستور زیر را اجرا کنید:
mysql -u root -p
- با دستور زیر یک databse جدید بسازید:
CREATE DATABASE helloworld CHARACTER SET utf8 COLLATE utf8_general_ci
مرحله 2 - connection مربوط به پایگاه داده را در فایل config/db.php پیکربندی کنید. configuration زیر برای سیستم کنونی، استفاده شده است.
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host = localhost;dbname = helloworld',
'username' => 'vladimir',
'password' => '12345',
'charset' => 'utf8',
];
?>
مرحله 3 - داخل دایرکتوری ریشه ی پروژه، دستور زیر را run کنید :
./yii migrate/create test_table
این فرمان یک migration پایگاه داده، برای مدیریت DB ایجاد می کند. باید فایل migration در پوشه migrations در root پروژه ظاهر شود.
مرحله 4 - فایل migration یعنی 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", "user1@gmail.com"],
["User2", "user2@gmail.com"],
["User3", "user3@gmail.com"],
["User4", "user4@gmail.com"],
["User5", "user5@gmail.com"],
["User6", "user6@gmail.com"],
["User7", "user7@gmail.com"],
["User8", "user8@gmail.com"],
["User9", "user9@gmail.com"],
["User10", "user10@gmail.com"],
["User11", "user11@gmail.com"],
]);
}
public function safeDown() {
$this->dropTable('user');
}
}
?>
migration بالا یک جدول user با این فیلدها ایجاد می کند: id, name, email.
مرحله 5 - داخل دایرکتوری ریشه ی پروژه، دستور زیر را run کنید :
./yii migrate
از این دستور برای اعمال migration به پایگاه داده استفاده می شود.
مرحله 6 - حالا ما باید یک مدل برای جدول user مان ایجاد کنیم. برای سادگی کار، ما قصد داریم از ابزار تولید کد Gii استفاده کنیم. در مرورگر وب تان این آدرس را باز کنید: http://localhost:8080/index.php?r=gii. سپس بر روی دکمه “Start” زیر هدر “Model generator” کلیک کنید. فیلد Table Name و فیلد Model Class را به ترتیب با “user” و “MyUser” پر کنید، روی دکمه “Preview” کلیک کنید و در نهایت روی دکمه “Generate” کلیک کنید.
هم اکنون می توانید مدل MyUser را در دایرکتوری models مشاهده نمایید.
Pagination در Action
مرحله 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,
]);
}
مرحله 2 - یک فایل view به نام 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,
]);
?>
از طریق مرورگر وب تان در local host به آدرس http://localhost:8080/index.php?r=site/pagination بروید، هم اکنون می توانید ویجت pagination را مشاهده نمایید :
این فصل در یک نگاه:
…
سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…این فصل در یک نگاه:
…
پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…