Codeigniter ทำไงถึงจะinclude หน้าview อื่น มาไว้ในอีกviewนึงได้ครับ?

เริ่มโดย BHunter, 15 มกราคม 2017, 16:38:31

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

BHunter

สวัสดีครับ
ใช้ Codeigniter อยู่ + facebook php sdk version.3.2.3
พอดีทำหน้า login facebook น่ะครับ มีอยู่ด้วยกัน 4 หน้า (1. login page 2.register page 3.login special member page 4.register special member page)

แล้วในไฟล์ view 4 ไฟล์ ที่ว่า  จะต้องมีโค้ดที่ setup ค่าเริ่มต้น facebook (ใส่appid appsecret)

<?php require_once(APPPATH.'libraries/facebook/src/facebook.php');
$facebook = new Facebook(array(
  
"appId"  => "xxxxxxxxxxxxxxx",
  
"secret" => "xxxxxxxxxxxxxxxxxxxxxxxx",
));


$user $facebook->getUser();


ปัญหาคือ ถ้าวันหลังเกิดต้องเปลี่ยน appid appsecret จะต้องเปลี่ยนทั้ง 4 ไฟล์viewนี้เลย  ซึ่งไม่น่าจะดีเท่าไร

ผมเลยสร้างไฟล์viewใหม่ ชื่อ "fb_init.php" ที่เก็บโค้ดพวกนี้ไว้

<?php require_once(APPPATH.'libraries/facebook/src/facebook.php');
    
$facebook = new Facebook(array(
      
"appId"  => "xxxxxxxxxxxxx",
      
"secret" => "xxxxxxxxxxxxxxxxxxxxxxxxxxx",
    ));


    
$user $facebook->getUser();


จากนั้นใน ไฟล์view 4 ไฟล์ ที่ว่าก็เขียน include view แบบนี้

$this->load->view('fb_init.php');

ปรากฎว่าเกิดerror ว่าไอโค้ดfacebook ที่เหลือไม่สามารถอ้างอิงถึงตัวแปร $user ได้
โค้ดที่เหลือของfacebookก็ประมาณนี้ครับ

  if ($user) {
     try {
       // Proceed knowing you have a logged in user who's authenticated.
       $user_profile = $facebook->api('/me?fields=id,email,name,first_name,last_name,picture'); //ต้องมีหลัง /me ไม่งั้นประวัติมาไม่ครบ
     } catch (FacebookApiException $e) {
       error_log($e);
       $user = null;
     }
   }

$loginUrl = $facebook->getLoginUrl(array(  
   "redirect_uri"=>"http://www.club55.net/login",  
   "scope"=>"email"
 ));


ทำไงดีครับพี่ๆ :wanwan017:  หรือถ้าพี่มีวิธีที่ดีกว่า แนะนำด้วยครับ  ผมว่าผมเขียน code facebook ในview น่าจะไม่ถูกหลักเท่าไร

realten


infamous

สร้าง library เป็น adapter ของ fb ก่อนครับ
จากนั้นใน controller ที่ต้องการใช้งานก้อใช้ this load library ของ adapter ที่สร้างไว้ก่อนหน้านี้
จะได้ obj fb หรือ instance มาตัวหนึ่ง จากนั้นค่อยเอา instance นั้นมาใช้ใน controller อีกทีครับ
เวลาแก้พวก app id,secret มันจัดการที่ lib,adapter ไฟล์เดียวจบครับ

ผมแนะนำให้ทำความเข้าใจหลักของ oop, mvc เพิ่มนะครับจะได้เข้าใจมากขึ้น
เพราะการที่เราจะเอา third party มาใช้เสียบเข้าระบบ ไม่ควรทำที่ส่วนของ view ครับ

ปล. ผมเมาครับ