สอน 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 ได้ในเบื้องต้นก่อน บทความต่อไปเราจะลองมาทดสอบการทำงานร่วมกับฐานข้อมูลครับ