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