مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

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  را مشاهده نمایید :

فصلِ: 14 , تعداد قسمت ها: 188 , سطح: صفر تا صد

این فصل در یک نگاه:

سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…
فصلِ: 8 , تعداد قسمت ها: 77 , سطح: صفر تا صد

این فصل در یک نگاه:

  پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید