จากเนื้อหาตอนที่แล้ว เราสร้างหน้า page ใหม่แบบกำหนดเองขึ้นมาอย่างง่าย
ต่อไป เราจะมาเพิ่มเติมในส่วนของการกำหนดภาษา และการเรียกใช้งาน
เนื้อหาตอนที่แล้ว การสร้างหน้า page ใหม่แบบกำหนดเองใน OpenCart ตอนที่ 1
https://www.ninenik.com/content.php?arti_id=712 via @ninenik
การกำหนดไฟล์ภาษา
ก่อนอื่นมาดูรูปแบบของไฟล์ที่ใช้กำหนดภาษา ตามโครงสร้างตัวอย่าง (contact.php) ดังนี้
<?php // Heading รายการหัวข้อเพจนั้นๆ $_['heading_title'] = 'Contact Us'; // Text รายการข้อความต่างๆ $_['text_location'] = 'Our Location'; $_['text_store'] = 'Our Stores'; $_['text_contact'] = 'Contact Form'; $_['text_address'] = 'Address'; $_['text_telephone'] = 'Telephone'; $_['text_fax'] = 'Fax'; $_['text_open'] = 'Opening Times'; $_['text_comment'] = 'Comments'; $_['text_success'] = '<p>Your enquiry has been successfully sent to the store owner!</p>'; // Entry รายการข้อความสำหรับหัวข้อใน ฟอร์ม $_['entry_name'] = 'Your Name'; $_['entry_email'] = 'E-Mail Address'; $_['entry_enquiry'] = 'Enquiry'; // Email รายการอื่่นๆ เพิ่มเติม $_['email_subject'] = 'Enquiry %s'; // Errors รายการข้อความ error $_['error_name'] = 'Name must be between 3 and 32 characters!'; $_['error_email'] = 'E-Mail Address does not appear to be valid!'; $_['error_enquiry'] = 'Enquiry must be between 10 and 3000 characters!';
จะสังเกตว่ารูปแบบหลักๆ จะเป็นประมาณนี้
<?php // Heading รายการหัวข้อเพจนั้นๆ $_['heading_title'] = '..............'; // Text รายการข้อความต่างๆ $_['text_........'] = '.................'; // Entry รายการข้อความสำหรับหัวข้อใน ฟอร์ม $_['entry_........'] = '.................'; // Errors รายการข้อความ error $_['error_........'] = '.................';
ในตอนนี้เราพอรู้แนวทางการกำหนดไฟล์ ภาษาแล้ว แต่ก่อนการกำหนดไฟล์ภาษา เราต้อง
สร้างรูปแบบหน้าเพจที่เราต้องการก่อน ในที่นี้ เราจะสร้างหน้าเพจ ที่มีฟอร์มส่งข้อมูลอย่างง่าย
ตามรูปแบบต่อไปนี้ (แก้ไขจากไฟล์ mypage.tpl ในเนื้อหาตอนที่แล้ว)
เราจะได้ไฟล์ mypage.tpl ที่อยู่ใน catalog/view/theme/default/template/extra/mypage.tpl
ใหม่ ดังนี้
<?php echo $header; ?>
<div class="container">
<div class="row"><?php echo $column_left; ?>
<?php if ($column_left && $column_right) { ?>
<?php $class = 'col-sm-6'; ?>
<?php } elseif ($column_left || $column_right) { ?>
<?php $class = 'col-sm-9'; ?>
<?php } else { ?>
<?php $class = 'col-sm-12'; ?>
<?php } ?>
<div id="content" class="<?php echo $class; ?>">
<?php echo $content_top; ?>
<?php echo $my_demo_text; ?>
<!--ฟอร์มที่เพิ่มเข้ามาใหม่ -->
<form action="" method="post" enctype="multipart/form-data" class="form-horizontal">
<fieldset>
<legend>ตัวอย่างฟอร์มส่งข้อมูล</legend>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-name">ชื่อ นามสกุล</label>
<div class="col-sm-10">
<input type="text" name="name" value="" id="input-name" class="form-control" />
<div class="text-danger">ข้อความแจ้งถ้า error</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="input-email">อีเมล</label>
<div class="col-sm-10">
<input type="text" name="email" value="" id="input-email" class="form-control" />
</div>
</div>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-enquiry">รายละเอียด</label>
<div class="col-sm-10">
<textarea name="enquiry" rows="10" id="input-enquiry" class="form-control"></textarea>
<div class="text-danger">ข้อความแจ้งถ้า error</div>
</div>
</div>
</fieldset>
<div class="buttons">
<div class="pull-right">
<input class="btn btn-primary" type="submit" value="ส่งข้อมูล" />
</div>
</div>
</form>
<!--ฟอร์มที่เพิ่มเข้ามาใหม่ -->
<?php echo $content_bottom; ?></div>
<?php echo $column_right; ?></div>
</div>
<?php echo $footer; ?>
เมื่อเราทดสอบรันหน้านี้ จะได้เป้นดังรูป

จากนั้นเรามาแปลงส่วนของข้อความให้เป็นตัวแปร สำหรับกำหนดในภาษา จะได้เป็น (ข้อดึงมาอธิบานเฉพาะสวนของฟอร์ม)
<!--ฟอร์มที่เพิ่มเข้ามาใหม่ -->
<form action="" method="post" enctype="multipart/form-data" class="form-horizontal">
<fieldset>
<legend><?php echo $text_demo_form; ?></legend>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-name"><?php echo $entry_name; ?></label>
<div class="col-sm-10">
<input type="text" name="name" value="" id="input-name" class="form-control" />
<?php if ($error_name) { ?>
<div class="text-danger"><?php echo $error_name; ?></div>
<?php } ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="input-email"><?php echo $entry_email; ?></label>
<div class="col-sm-10">
<input type="text" name="email" value="" id="input-email" class="form-control" />
</div>
</div>
<div class="form-group required">
<label class="col-sm-2 control-label" for="input-enquiry"><?php echo $entry_enquiry; ?></label>
<div class="col-sm-10">
<textarea name="enquiry" rows="10" id="input-enquiry" class="form-control"></textarea>
<?php if ($error_enquiry) { ?>
<div class="text-danger"><?php echo $error_enquiry; ?></div>
<?php } ?>
</div>
</div>
</fieldset>
<div class="buttons">
<div class="pull-right">
<input class="btn btn-primary" type="submit" value="<?php echo $button_submit; ?>" />
</div>
</div>
</form>
<!--ฟอร์มที่เพิ่มเข้ามาใหม่ -->
เมื่อได้ตัวแปรสำหรับกำหนดภาษาครบแล้ว ต่อไปถึงเวลาในการสร้างไฟล์สำหรับกำหนดภาษา และเนื่องจาก
ในเนื้อหาเราเน้นภาษาไทย ดังนั้นเราจะยกตัวอย่างการสร้างเฉพาะในส่วนของภาษาไทย ภาษาอื่นๆ ก็ทำคล้ายๆ กัน
ให้สร้างโฟลเดอร์ชื่อ extra ไว้ใน catalog/language/thai
จากนั้นสร้างไฟล์ชื่อ mypage.php ไว้ในโฟลเดอร์ extra อีกที
path ที่ได้จะได้เป้น catalog/language/thai/extra/mypage.php โดยรายละเอียดของไฟล์เป็นดังนี้
<?php // Heading รายการหัวข้อเพจนั้นๆ $_['heading_title'] = 'My Page Title'; // Text รายการข้อความต่างๆ $_['text_demo_form'] = 'ตัวอย่างฟอร์มส่งข้อมูล'; $_['text_demo_success'] = 'ทำการส่งข้อมูลเรียบร้อยแล้ว'; $_['text_demo_back'] = 'ย้อนกลับ'; // Entry รายการข้อความสำหรับหัวข้อใน ฟอร์ม $_['entry_name'] = 'ชื่อ นามสกุล'; $_['entry_email'] = 'อีเมล'; $_['entry_enquiry'] = 'รายละเอียด'; $_['button_submit'] = 'ส่งข้อมูล'; // Errors รายการข้อความ error $_['error_name'] = 'กรุณากรอกชื่อ'; $_['error_enquiry'] = 'กรุณากรอกรายละเอียด';
การเรียกใช้งานไฟล์ภาษา
และทำการเรียกใช้จากไฟล์ใน controller ได้ดังนี้
path ไฟล์ mypage.php ใน controller จากตอนที่แล้ว คือ catalog/controller/extra/mypage.php
เมื่อเพิ่มส่วนของการเรียกใช้งานภาษา
<?php
class ControllerExtraMypage extends Controller {
// ตัวแปร $error กำหนดไว้ ยังไม่ได้ใช้งานในตอนนี้
private $error = array();
public function index() {
// โหลดข้อมูลภาษาจากไฟล์ภาษา
$this->load->language('extra/mypage');
// กำหนดส่วนของ title ของหน้าเพจ
$this->document->setTitle($this->language->get('heading_title'));
// กำหนดตัวแปรในส่วนของการใช้งานภาษา
$data['text_demo_form'] = $this->language->get('text_demo_form');
$data['text_demo_success'] = $this->language->get('text_demo_success');
$data['text_demo_back'] = $this->language->get('text_demo_back');
$data['entry_name'] = $this->language->get('entry_name');
$data['entry_email'] = $this->language->get('entry_email');
$data['entry_enquiry'] = $this->language->get('entry_enquiry');
$data['button_submit'] = $this->language->get('button_submit');
$data['error_name'] = $this->language->get('error_name');
$data['error_enquiry'] = $this->language->get('error_enquiry');
// กำหนดตัวแปร ที่่ต้องการส่งค่าไปแสดง หรือใช้งาน
$data['my_demo_text'] = "This is mypage.";
// โหลดเนื้อหาส่วนต่างๆ ของหน้าเพจ มาไว้ในตัวแปร
$data['column_left'] = $this->load->controller('common/column_left');
$data['column_right'] = $this->load->controller('common/column_right');
$data['content_top'] = $this->load->controller('common/content_top');
$data['content_bottom'] = $this->load->controller('common/content_bottom');
$data['footer'] = $this->load->controller('common/footer');
$data['header'] = $this->load->controller('common/header');
// แสดงผลข้อมูลโดยนำค่าตัวแปร $data ส่งไปแสดงใน template extra/mypage.tpl
$this->response->setOutput($this->load->view('extra/mypage', $data));
}
}
ทดสอบเรียกใช้งาน http://localhost/store/index.php?route=extra/mypage
หากไม่มีอะไรผิดพลาด เราจะได้หน้าเพจใหม่ ที่มีการเรียกใช้งานไฟล์ภาษาแล้ว ดังนี้

เนื้อหาตอนหน้า เรามาดูเรื่องการกำหนด model และการจัดการกับ error