สอนทำระบบสมัครสมาชิกด้วย Yii Framework ตอนที่ 2 (จบ) บันทึกข้อมูลสมาชิกและอัปโหลดรูปสมาชิก
ต่อเนื่องจากบทความก่อนหน้านี้ที่ผมได้สอน คือ สอนทำระบบสมัครสมาชิกด้วย Yii Framework ตอนที่ 1 การ Validation Form บทความนี้ผมจะสอนใช้ Yii Framework ทำการเขียนคำสั่งบันทึกข้อมูลของสมาชิกลงฐานข้อมูลกับการเขียนคำสั่งอัปโหลดรูปประจำตัวของสมาชิก ไปเก็บไว้ในโฟลเดอร์สมาชิกที่เราสร้างไว้
1.อันดับแรก เข้าไปเปลี่ยนชื่อไฟล์ users.php ใน โฟลเดอร์ models ให้ชื่อ user.php ออกก่อนครับ เพราะผมเจอปัญหาในส่วนของการเซต Scenario ดังนั้นสรุปได้ว่า การตั้งชื่อ model ไม่ควรมี s ต่อท้ายครับ ให้แก้ไขดังรูป
2.ต่อมาเราไปสร้างโฟลเดอร์สำหรับเก็บรูปของสมาชิกครับ ผมจะสร้างในโฟลเดอร์ images ครับ ตั้งชื่อโฟลเดอร์ว่า users ดังรูป
3.สุดท้าย เราจะเข้าไปที่ controllers ชื่อว่า UsersController.php เราจะแก้ไขคำสั่งเดิมในเมธอดชื่อ actionRegister ให้ใช้คำสั่งดังนี้
เท่านี้ก็เสร็จสมบูรณ์แล้วครับ ให้ทดสอบโดยพิมพ์ต่อท้าย URL ว่า index.php? r=users/register และลองกรอกข้อมูลให้ครบถ้วนแล้วกดปุ่ม Submit ดูครับ ข้อมูลจะต้องถูกเก็บไว้ในเทเบิลชื่อ users และรูปภาพจะเก็บไว้ใน images/users
แล้วพบกันโอกาสหน้าครับ ผมจะพูดถึงเรื่อง การแก้ไข/ลบและแสดงข้อมูลบ้างครับ และสุดท้ายจะสอน Bootstrap ประยุกต์ใช้กับ Yii Frameworkครับ
1.อันดับแรก เข้าไปเปลี่ยนชื่อไฟล์ users.php ใน โฟลเดอร์ models ให้ชื่อ user.php ออกก่อนครับ เพราะผมเจอปัญหาในส่วนของการเซต Scenario ดังนั้นสรุปได้ว่า การตั้งชื่อ model ไม่ควรมี s ต่อท้ายครับ ให้แก้ไขดังรูป
2.ต่อมาเราไปสร้างโฟลเดอร์สำหรับเก็บรูปของสมาชิกครับ ผมจะสร้างในโฟลเดอร์ images ครับ ตั้งชื่อโฟลเดอร์ว่า users ดังรูป
3.สุดท้าย เราจะเข้าไปที่ controllers ชื่อว่า UsersController.php เราจะแก้ไขคำสั่งเดิมในเมธอดชื่อ actionRegister ให้ใช้คำสั่งดังนี้
public function actionRegister() {
$model = new User;
$model->setScenario('register');
if (isset($_POST['Users'])) {
$model->attributes = $_POST['Users'];
$userPicFile = CUploadedFile::getInstance($model, 'user_pic'); //สร้าง Instance ให้กับรูปภาพ โดยเรียกใช้คลาส CUploadedFile ที่ Yii สร้างไว้ให้แล้ว
if (!empty($userPicFile)) {
$rnd = date('dmYHis'); //สำหรับใช้เป็นชื่อของรูปภาพและสามารถป้องกันการอัปโหลดภาพชื่อซ้ำกัน
$pictype = end(explode('.', $userPicFile)); //ตัดให้เหลือแต่นามสกุลไฟล์ เช่น jpg ,png,gif
$picName = "{$rnd}.{$pictype}"; //เอาชื่อกับนามสกุลไฟล์มาเรียงกันใหม่ จะได้ชื่อไฟล์ที่ไม่ซ้ำกับของคนอื่น สามารถป้องกันการอัปโหลดภาพทับกัน
$model->user_pic=$picName;//Set ชื่อรูปภาพให้กับตัวแปร user_pic เพื่อบันทึกลงในฐานข้อมูล
$pathUpload = Yii::app()->basePath . '/../images/users/' . $picName;//กำหนด path สำหรับเก็บไฟล์รูปประจำตัว
$userPicFile->saveAs($pathUpload);//อัปโหลดรูปประจำตัวของสมาชิกไว้ในพาธ images/users/
}
if ($model->save()) {//บันทึกลงฐานข้อมูล
//เมื่อบันทึกข้อมูลเสร็จจะให้ทำอะไรต่อไป ก็แล้วแต่ปุ๊!!! ส่วนผมจะใช้คำสั่ง redirect ไปยังหน้า index ผมใช้คำสั่ง
$this->redirect(array('index'));
//exit(); //จบการทำงาน
}
}
$this->render('register', array('model' => $model));
}
เท่านี้ก็เสร็จสมบูรณ์แล้วครับ ให้ทดสอบโดยพิมพ์ต่อท้าย URL ว่า index.php? r=users/register และลองกรอกข้อมูลให้ครบถ้วนแล้วกดปุ่ม Submit ดูครับ ข้อมูลจะต้องถูกเก็บไว้ในเทเบิลชื่อ users และรูปภาพจะเก็บไว้ใน images/users
แล้วพบกันโอกาสหน้าครับ ผมจะพูดถึงเรื่อง การแก้ไข/ลบและแสดงข้อมูลบ้างครับ และสุดท้ายจะสอน Bootstrap ประยุกต์ใช้กับ Yii Frameworkครับ


ความคิดเห็น
แสดงความคิดเห็น