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 به صورت مرتب شده پشت سرهم قرار گرفته اند. تصویر زیر بیان کننده این مطلب می باشد.
این فصل در یک نگاه:
…
سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…این فصل در یک نگاه:
…
پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…