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

Sorting یا مرتب سازی در فریمورک Yii


هنگامی که می خواهیم مقدار زیادی از داده ها را نمایش دهیم، نیاز به مرتب سازی آنها داریم. Yii از شی yii\data\Sort object برای نشان دادن یک schema مرتب سازی شده، استفاده می کند.

برای نشان دادن مرتب سازی در action، ما نیاز به دیتا داریم.

آماده سازی DB

مرحله 1 - یک databse جدید بسازید. databse را می توان با یکی از دو روش زیر ایجاد نمود:

  • در ترمینال دستور زیر را اجرا کنید.
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

مرحله 6 - حالا ما باید یک مدل برای جدول user مان ایجاد کنیم. برای سادگی کار، ما قصد داریم از ابزار تولید کد Gii  استفاده کنیم. در مرورگر وب تان این آدرس را باز کنید: http://localhost:8080/index.php?r=gii. سپس بر روی دکمه “Start” زیر هدر “Model generator” کلیک کنید. فیلد Table Name و فیلد Model Class را به ترتیب با “user” و “MyUser”  پر کنید، روی دکمه “Preview” کلیک کنید و در نهایت روی دکمه “Generate” کلیک کنید.

هم اکنون می توانید مدل MyUser را در دایرکتوری models  مشاهده نمایید.

مرتب سازی در Action

مرحله 1 - متد actionPagination را به SiteController اضافه کنید.

public function actionSorting() {
   //declaring the sort object
   $sort = new Sort([
      'attributes' => ['id', 'name', 'email'], 
   ]);
   //retrieving all users
   $models = MyUser::find()
      ->orderBy($sort->orders)
      ->all();
   return $this->render('sorting', [
      'models' => $models,
      'sort' => $sort,
   ]);
}

مرحله 2 - یک فایلview با نام sorting داخل پوشه views/site ایجاد کنید.

<?php
   // display links leading to sort actions
   echo $sort->link('id') . ' | ' . $sort->link('name') . ' | ' . $sort->link('email');
?><br/>
<?php foreach ($models as $model): ?>
   <?= $model->id; ?>
   <?= $model->name; ?>
   <?= $model->email; ?>
   <br/>
<?php endforeach; ?>

مرحله 3 - حالا اگر شما در آدرسبار مرورگر وبتان تایپ کنید: http://localhost:8080/index.php?r=site/sorting ، می توانید ببینید که فیلدهای id, name, email  به صورت مرتب شده پشت سرهم قرار گرفته اند. تصویر زیر بیان کننده این مطلب می باشد.

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

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

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

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

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

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

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

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

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