สอบถามผู้รู้ เพิ่มตัวเลือกหมวดหมู่ใน models repair
ขอสอบถามผู้รู้ครับ ผมเพิ่มโค๊ตเข้าไปในไฟล์ repair\views\receive.php เพื่อให้มีตัวเลือก หมวดหมู่, ยี่ห้อ แต่ ไม่รู้ว่าต้อง ใช้โค๊ตไหน (repair\models\receive.php) ให้สามารถบันทึก และเขียนลงในตารางได้ รบกวนด้วยครับ
// หมวดหมู่, ยี่ห้อ
$category = \Inventory\Category\Model::init();
$n = 0;
foreach (Language::get('INVENTORY_CATEGORIES') as $key => $label) {
if ($n % 2 == 0) {
$groups = $fieldset->add('groups');
}
$groups->add('text', array(
'id' => $key,
'labelClass' => 'g-input icon-category',
'itemClass' => 'width50',
'label' => $label,
'datalist' => $category->toSelect($key),
'value' => isset($index->{$key}) ? $index->{$key} : 0,
));
$n++;
}
// หมวดหมู่, ยี่ห้อ
$category = \Inventory\Category\Model::init();
$n = 0;
foreach (Language::get('INVENTORY_CATEGORIES') as $key => $label) {
if ($n % 2 == 0) {
$groups = $fieldset->add('groups');
}
$groups->add('text', array(
'id' => $key,
'labelClass' => 'g-input icon-category',
'itemClass' => 'width50',
'label' => $label,
'datalist' => $category->toSelect($key),
'value' => isset($index->{$key}) ? $index->{$key} : 0,
));
$n++;
}
รับค่ามา แล้วก็มีคอลัมน์ ตรงกันในตาราง แค่นั้น
ลอง print_r($_POST); หรือ print_r($repair); ออกมาดู
ก่อนนี้เคยทำแบบเพิ่มค่าเข้าไปใหม่เลย ไม่มี ตัวเลือก (select, checkboxgroups) สามารถ export ได้ครับ แต่อยากลองทำแบบให้มีตัวเลือก
หรือสามารถเขียนค่า ตรงๆลงในตารางได้ไหมครับ ไม่ต้องเขียนเป็น id
$inventory = array(
'equipment' => $request->post('equipment')->topic(),
'serial' => $request->post('serial')->topic(),
);
// รับค่าจากตัวเลือก
foreach (Language::get('INVENTORY_CATEGORIES') as $key => $label) {
$inventory[$key] = $request->post($key)->toInt();
}
$id = $request->post('id')->toInt();
foreach (Language::get('INVENTORY_BRAND') as $key => $label) {
$inventory[$key] = $request->post($key)->toInt();
}
$id = $request->post('id')->toInt();
// ตัวเลือกที่เลือก
foreach (Language::get('USER_ACCESSORIES') as $key => $label) {
$values = $request->post($key, array())->toInt();
if (!empty($values)) {
$inventory[$key] = implode(',', $values);
}
}
foreach (Language::get('DEVICE_DATA') as $key => $label) {
$values = $request->post($key, array())->toInt();
if (!empty($values)) {
$inventory[$key] = implode(',', $values);
}
}
repair\views\receive.php
สอบถามอาจารย์ครับ ว่ามันมีวิธีรับค่าจาก topic ในตาราง rp_category เขียนลงในตาราง rp_inventory ได้เลยไหมครับ ไม่ต้องรับค่าจาก category_id ขอบคุณครับ
$filedset->add('select', array(
.............
'options' => array('key1' => 'option1', 'key2' => 'option2', ......),
.............
));
1, 2 คือ key1, key2 นั่นแหละ อยากเปลี่ยนก็หาวิธีเปลี่ยนเอา
แต่การเปลี่ยนอาจไม่ง่ายนักหรอกเพราะต้องแก้ไขเยอะ ไม่แนะนำให้ทำสักเท่าไร (อยากทำก็ลองดู)
จริงๆ มันมีวิธีที่ง่ายกว่า ด้วยการสร้างคลาสขึ้นมาเพื่อแปลงค่า 1,2 ให้เป็น ข้อความ ซึ่งตัวอย่างก็อยู่ในโค้ดนั่นแหละ ลองมองหา Category ดูครับ
และเพิ่ม inventory กับ categories ให้เข้าไปอยู่ใน modules Repair
views\receive.php เปลี่ยนมาใช้
..............
// หมวดหมู่, ยี่ห้อ
foreach (Language::get('INVENTORY_CATEGORIES') as $key => $label) {
$groups->add('select', array(
'id' => $key,
'labelClass' => 'g-input icon-category',
'itemClass' => 'width50',
'label' => $label,
'options' => \Repair\Group\Model::init($key)->toSelect(),
'value' => isset($index->{$key}) ? $index->{$key} : array(),
));
}
foreach (Language::get('INVENTORY_BRAND') as $key => $label) {
$groups->add('select', array(
'id' => $key,
'labelClass' => 'g-input icon-category',
'itemClass' => 'width50',
'label' => $label,
'options' => \Repair\Group\Model::init($key)->toSelect(),
'value' => isset($index->{$key}) ? $index->{$key} : array(),
));
}
// ตัวเลือก อุปกรณ์ที่นำมาด้วย
foreach (Language::get('USER_ACCESSORIES') as $key => $label) {
$fieldset->add('checkboxgroups', array(
'id' => $key,
'labelClass' => 'g-input icon-category',
'itemClass' => 'item',
'label' => $label,
'comment' => '{LNG_Record} {LNG_Accessory}',
'options' => \Repair\Group\Model::init($key)->toSelect(),
'value' => isset($index->{$key}) ? explode(',', $index->{$key}) : array(),
));
}
// ตัวเลือก ข้อมูลที่จะเก็บไว้
foreach (Language::get('DEVICE_DATA') as $key => $label) {
$fieldset->add('checkboxgroups', array(
'id' => $key,
'labelClass' => 'g-input icon-category',
'itemClass' => 'item',
'label' => $label,
'comment' => '{LNG_Important information}',
'options' => \Repair\Group\Model::init($key)->toSelect(),
'value' => isset($index->{$key}) ? explode(',', $index->{$key}) : array(),
));
}
.............................................................
ส่วนไฟล์ models\Group.php แก้จาก category_id เป็น topic
/**
* อ่านรายชื่อหมวดหมู่จากฐานข้อมูลตามภาษาปัจจุบัน
* สำหรับการแสดงผล
*
* @param string $type
*
* @return static
*/
public static function init($type)
{
// Model
$model = new static();
// Query
$query = $model->db()->createQuery()
->select('id', 'category_id', 'topic')
->from('category')
->where(array('type', $type))
->order('category_id')
->toArray()
->cacheOn();
foreach ($query->execute() as $item) {
$model->datas[$item['topic']] = array( ***แก้จาก category_id เป็น topic
'id' => $item['id'],
'category_id' => $item['category_id'],
'topic' => $item['topic'],
);
}
return $model;
}
กว่าจะได้แต่ละอันยากเลยครับ แต่ก็เจอปัญหาใหม่ครับ บันทึกได้แล้วแต่จะแก้ไข ส่วนตัวเลือก (ที่เพิ่มโค๊ตเข้าไปใหม่) มันไม่แก้ไขให้ เข้าใจว่ามันมีโค๊ตในส่วนแก้ไข ต้องศึกษาต่อครับ ขอบคุณต้นแบบของอาจารย์ ครับ