PHP Ionic Angular Phonegap AJAX Javascript CSS MySQL jQuery Forum


แนวทางการใช้งาน เมนูหลายภาษาในโปรเจ็ค codeigniter อย่างง่าย

04 March 2016 By
codeigniter

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ codeigniter



สำหรับเนื้อหาต่อไปนี้ จะเป้นการประยุกต์สร้างเมนูให้รองรับหลายภาษาในโปรเจ็ค
codeigniter โดยขออธิบายแทรกไปกับสว่นของเนื้อหาตามลิ้งค์ด้านล่าง
 
ประยุกต์ routing จัดการ URL ร่วมกับ controllers สำหรับหน้าเว็บไซต์หลัก 
http://www.ninenik.com/content.php?arti_id=680 via @ninenik
 
จากลิ้งค์ข้างต้น เป็นการสร้างหน้าเพจสำหรับโปรเจ็ค codeigniter
ประกอบด้วยหน้า Home ,About Us,Service และ Contact Us โดยจะมีส่วนของเมนูด้านบน
เพื่อลิ้งค์ไหน้าต่างๆ ดังนี้

    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">  
      <ul class="nav navbar-nav">  
        <li><a href="<?=base_url('home')?>">Home</a></li>  
        <li><a href="<?=base_url('aboutus')?>">About Us</a></li>  
        <li><a href="<?=base_url('service')?>">Service</a></li>  
        <li><a href="<?=base_url('contactus')?>">Contact Us</a></li>  
      </ul>  
 
เริ่มต้นให้สร้างโฟลเดอร์ชื่อ lang ไว้ใน apps > views ตามรูป
 
 
จากนั้นให้สร้างไฟล์ en.php และ th.php ไว้ในโฟลเดอร์ lang สำหรับใช้กำหนดตัวแปร เก็บค่าคงที่ตัวแปร
ที่ต้องการ ในที่นี้เราจะทำแค่ 4 ข้อความขอเมนูด้านบน จะได้โค้ดไฟล์ดังนี้
 
th.php
 
<?php
/////// Top menu ///////////
define("_top_menu_home_text","หน้าแรก");
define("_top_menu_aboutus_text","เกี่ยวกับเรา");
define("_top_menu_service_text","บริการของเรา");
define("_top_menu_contactus_text","ติดต่อเรา");
 
en.php
 
<?php
/////// Top menu ///////////
define("_top_menu_home_text","Home");
define("_top_menu_aboutus_text","About Us");
define("_top_menu_service_text","Services");
define("_top_menu_contactus_text","Contact Us");
 
 
เมือเสร็จในส่วนของการกำหนดภาษาข้างต้นแล้ว ต่อไปจะมาดูส่วนของการเรียกใช้
ให้เราเปิดไฟล์ apps > controllers > Pages.php
 
<?php  
defined('BASEPATH') OR exit('No direct script access allowed');  
  
class Pages extends CI_Controller {  
    
    public function __construct()
    {
            parent::__construct();
    }  
    
    public function index($web_pages="home",$action=null,$id=null)  
    {  
        $data['title'] = ucfirst($web_pages);  
        $data['title_h1'] = ucfirst($web_pages);  
        $data['action'] = $action;
        $data['id']=$id;
        $file_model=APPPATH.'/models/'.ucfirst($web_pages).'_model.php';  
        if(file_exists($file_model))  
        {  
            $this->load->model($web_pages.'_model');  
        }               
        $this->load->view('templates/header', $data);  
        $this->load->view('pages/'.$web_pages,$data);  
        $this->load->view('templates/footer');  
    }  
    
}
 
เนื่องจากเราต้องการใช้งาน cookie เพื่อเก็บค่าตัวแปร ภาษาที่ต้องการแสดง เราต้องการการเนียกใช้
cookie โดยเพิ่มคำสั่งนี้เข้าไปในส่วนของ function __construct
 
    public function __construct()
    {
            parent::__construct();
            $this->load->helper('cookie');			
    }  
 
จากนั้นสร้างเงื่อนไขการเรียกไฟล์ en.php และ th.php ดังนี้
 
	// เก็บค่าตัวแปร cookie ภาษา   
	$ck_lang_val=get_cookie('ck_lang_val');      
	// ส่งค่าไปใช้ในไฟล์เนื้อหา
	$data['ck_lang_val']=$ck_lang_val; 
	if($ck_lang_val!=""){ // ถ้าไม่ใช่ค่าว่าง
		$this->load->view('lang/'.$ck_lang_val);  
	}else{ // ถ้าไม่มีค่า หรือเป็นค่าว่าง ให้แสดงภาษาไทย
		$this->load->view('lang/th');  
	}
 
 
โค้ดไฟล์ Pages.php แบบเต็ม
 
<?php  
defined('BASEPATH') OR exit('No direct script access allowed');  
  
class Pages extends CI_Controller {  
    
    public function __construct()
    {
            parent::__construct();
            $this->load->helper('cookie');			
    }  
    
    public function index($web_pages="home",$action=null,$id=null)  
    {  
        $data['title'] = ucfirst($web_pages);  
        $data['title_h1'] = ucfirst($web_pages);  
        $data['action'] = $action;
        $data['id']=$id;
        $file_model=APPPATH.'/models/'.ucfirst($web_pages).'_model.php';  
        if(file_exists($file_model))  
        {  
            $this->load->model($web_pages.'_model');  
        }     
		// เก็บค่าตัวแปร cookie ภาษา   
		$ck_lang_val=get_cookie('ck_lang_val');     
		// ส่งค่าไปใช้ในไฟล์เนื้อหา
		$data['ck_lang_val']=$ck_lang_val; 
		if($ck_lang_val!=""){ // ถ้าไม่ใช่ค่าว่าง
			$this->load->view('lang/'.$ck_lang_val);  
		}else{ // ถ้าไม่มีค่า หรือเป็นค่าว่าง ให้แสดงภาษาไทย
			$this->load->view('lang/th');  
		}
		$this->load->view('templates/header', $data);  
		$this->load->view('pages/'.$web_pages,$data);  
		$this->load->view('templates/footer');             
    }  
    
}
 
ต่อไปก็ส่วนของการดึงค่าตัวแปรมาแสดง ให้เรานำค่าตัวแปรที่กำหนด define ไว้มา
แทนข้อความที่เราต้องการ จากตัวแปรและข้อความด้านบน เราจะกำหนดในส่วนของเมนู
ด้านบน จะได้เป็นดังนี้
 
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">  
      <ul class="nav navbar-nav">  
        <li><a href="<?=base_url('home')?>">Home</a></li>  
        <li><a href="<?=base_url('aboutus')?>">About Us</a></li>  
        <li><a href="<?=base_url('service')?>">Service</a></li>  
        <li><a href="<?=base_url('contactus')?>">Contact Us</a></li>  
      </ul>  
 
จะได้เป้น
 
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">  
      <ul class="nav navbar-nav">  
        <li><a href="<?=base_url('home')?>"><?=_top_menu_home_text?></a></li>  
        <li><a href="<?=base_url('aboutus')?>"><?=_top_menu_aboutus_text?></a></li>  
        <li><a href="<?=base_url('service')?>"><?=_top_menu_service_text?></a></li>  
        <li><a href="<?=base_url('contactus')?>"><?=_top_menu_contactus_text?></a></li>  
      </ul>  
 
ทดสอบเรียกไฟล์โปรเจ็คของเรา ผ่าน url 
http://localhost/lernci/ 
จะได้ผลลัพธ์ดังรูป
 
 
จะเห็นว่าเมนูด้านบนจะแสดงเป็นภาษาไทยเป็นค่าเริ่มต้นนั่นเอง 
และยังไม่มีการกำหนดค่าตัวแปร cookie ที่ชื่อ ck_lang_val  
 
ต่อไปให้เราสร้างไฟล์ Lang.php ในโฟลเดอร์ apps > controllers เพื่อใช้ในการกำหนดค่า cookie
โดยมีรูแบบโค้ดตามด้านล่าง ดังนี้
 
  
<?php  
defined('BASEPATH') OR exit('No direct script access allowed');  
  
class Lang extends CI_Controller {  
    
    public function __construct()
    {
		parent::__construct();
		$this->load->helper('cookie');	// ใช้งาน cookie		
		$this->load->library('user_agent'); // ใช้งาน user agent เพื่อลิ้งค์กลับหน้าเดิมที่กดเข้ามา			
    }  
    public function en()
    {  
	// .ninenik.com  ให้กำหนดเป็น domain ของเรา ถ้าทดสอบที่เครื่อง localhost ให้ปล่อยเป้นค่าว่าง
		set_cookie('ck_lang_val','en',time()+(24*60*60),'.ninenik.com','/');
		$previous_url = $this->agent->referrer();    
		redirect($previous_url);
    }  
    public function th()
    {  
	// .ninenik.com  ให้กำหนดเป็น domain ของเรา ถ้าทดสอบที่เครื่อง localhost ให้ปล่อยเป้นค่าว่าง	
		set_cookie('ck_lang_val','th',time()+(24*60*60),'.ninenik.com','/');
		$previous_url = $this->agent->referrer();     
		redirect($previous_url);    
    }  	
    
}
 
 
 
 
ส่วนสุดท้ายก็คือปุ่มหรือลิ้งค์ที่เราจะกำหนดตัวแปร cookie เมื่อคลิกเลือก
ในที่นี้เราจะทำเป็นปุ่มตัวอักษรง่ายๆ หรือใครจะประยุกต์ใช้เป็นรูปภาพธงชาติก็ได้เหมือนกัน
 
รูปแบบก็ง่าย ลิ้งค์ไปยังหน้า lang/th สำหรับภาษาไทย และ lang/en สำหรับภาษาอังกฤษ
เช่น
 
<a href="<?=base_url("lang/en")?>">EN</a>
&nbsp; &nbsp;
<a href="<?=base_url("lang/th")?>">TH</a>
 
 
กรณี้เนื้อหาส่วนอื่นที่ดึงจากฐานข้อมูล เราก็สามารถใช้ตัวแปรที่ชื่อ $ck_lang_val
ที่เราส่งมา ใช้เป็นเงื่อนไขในการแสดงและดึงข้อมูลได้ ขึ้นกับการประยุกต์เพิ่มเติม
 






Tags:: codeigniter




เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก

กรุณาล็อกอิน และลงชื่อติดตาม


สมัครสมาชิกได้ที่        ล็อกอินได้ที่   



อย่าลืมกด Like กด Share เป็นกำลังใจ ในการสร้างบทความใหม่ๆ น่ะครับ


URL สำหรับอ้างอิง