สอน Yii 2 : ใช้งาน Model ร่วมกับ View และ Controller

yii2-framework
yii2-framework

สอน Yii 2 : ใช้งาน Model ร่วมกับ View และ Controller



หน้าที่หลักของ models คือการจัดการกับชุดข้อมูลต่าง ๆ ภายในเว็บไซต์ จากนั้นก็รอรับคำสั่งให้จากส่วน controller
เพื่อเริ่มทำงาน ทั้งการส่งข้อมูลจากการร้องขอและการบันทึกข้อมูล คำว่าข้อมูลในทีนี้หมายถึงชุดข้อมูลในรูปแบบต่าง ๆ
ไม่ว่าจะเป็นไฟล์ข้อมูล เช่น xml ข้อมูลที่ถูกดึงขึ้นมาจากฐานข้อมูล และรวมไปถึงข้อมูลที่ถูกสร้างขึ้นที่โมเดลเอง



ในบทความที่แล้ว เริ่มต้นสร้าง View และ Controller เราได้ทำความเข้าใจและใช้งานส่วนของ view และ controller
ในบทความนี้ จะใช้ไฟล์โปรเจคเดิมที่เราได้สร้างไว้ คือ

controllers/UserController.php
views/user/index.php

แต่จะเพิ่มให้มีการทำงานร่วมกับ model ที่เราจะต้องสร้างไว้ในโฟลเด้อ models/User.php

สร้าง User Models

ให้เราสร้างไฟล์ User.php วางไว้ใน models/User.php เพื่อใช้งานร่วมกับ UserController โดยเขียนโค๊ดได้ดังนี้

namespace app\models;

use Yii;
use yii\base\Model; // เปิดการเข้าถึง Model class

class User extends Model // สืบทอดคุณสมบัติของ Model Class
{
    public $name = "Witoon Pomipon";
    public $email = "[email protected]";

    public function getName()
    {
        return $this->name;
    }
	public function getEmail()
    {
        return $this->email;
    }
}

จากโค๊ดด้านบนเราได้สร้าง User คลาสและสืบทอดคุณสมบัติ Model คลาสซึ่งเป็นคลาสต้นแบบของ Yii2 จากนั้นได้สร้าง
Method มา 2 ตัวคือ getName และ getEmail พร้อมกับ return ค่าออกไปเมื่อมีการเรียกใช้งาน

ประกาศ User Model ใน UserContrller

หลังจากที่เราได้สร้างไฟล์ User.php ซึ่งเป็น model ข้อมูลเกี่ยวกับสมาชิกเรียบร้อยแล้ว ต่อมาจะเป็นการเรียกใช้งาน
ประกาศตัวแปร User Model ใน UserController จะสามารถเขียนโค๊ดดังตัวอย่างด้านล่างครับ

namespace app\controllers;

use Yii;
use yii\web\Controller;
use app\models\User; // เปิดการเข้าถึง User Model

class UserController extends Controller
{
    public function actionIndex()
    {
		$User = new User(); // ประกาศตัวแปร $User มีค่าเท่ากับ User Model
        return $this->render('index', [ // สั่ง render หน้า index view
            'User' => $User, // พร้อมกับส่ง User Model ออกไปด้วย
        ]);
    }
}

จากโค๊ดด้านบนเราได้เปิดการเข้าถึงไฟล์ User Model จากนั้นก็ประกาศตัวแปร $User และสั่ง render หน้า index
พร้อมกับส่งตัวแปร $User ออกไปที่ index view

แสดงข้อมูล User Model ที่ View

จะสังเกตุเห็นว่าการส่งข้อมูลออกไปที่ view ของ Yii framework มีหลักการเดียวกับ Laravel และ CI คือส่งออกไป
ในรูปแบบ Array และตอนนี้ใน views/user/index.php เราก็จะสามารถใช้งาน Method ต่าง ๆ ของ User Model
ได้ผ่านตัวแปร $User ที่ถูกส่งออกมาจาก UserController ดังตัวอย่างโค๊ดด้านล่าง

<div class="site-about">
     <p>
        Hi, I am beginner in Yii นาจาา <?php echo $User->getName()." / ".$User->getEmail(); ?>
    </p>
</div>

ผลลัพธ์ที่แสดงบนเว็บเบราว์เซอร์ คือ

Hi, I am beginner in Yii นาจาา Witoon Pomipon / [email protected]

ตัวอย่างการทำงาน model view controller ด้านบนเป็นการยกตัวอย่างแบบง่าย ๆ ไม่ซับซ้อน เพื่อให้ทุกท่านสามารถ
เข้าใจโครงสร้างการทำงานของ Yii ได้ในเบื้องต้นก่อน บทความต่อไปเราจะลองมาทดสอบการทำงานร่วมกับฐานข้อมูลครับ