สอบถามผู้รู้ เพิ่มตัวเลือกหมวดหมู่ใน models repair

// หมวดหมู่, ยี่ห้อ
$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++;
}
https://github.com/...dels/receive.php#L69
รับค่ามา แล้วก็มีคอลัมน์ ตรงกันในตาราง แค่นั้น
ลอง print_r($_POST); หรือ print_r($repair); ออกมาดู
รับค่ามา แล้วก็มีคอลัมน์ ตรงกันในตาราง แค่นั้น
ลอง print_r($_POST); หรือ print_r($repair); ออกมาดู
อันนี้รูปหน้า views ครับ
repair\views\receive.php
รูปนี้ ตาราง rp_category ครับ
สอบถามเพิ่มเติมครับ ผม ใช้โค๊ตเพิ่มไปใน repair\models\receive.php ตอนนี้รับค่าเป็น id เขียนลงในตารางได้แล้ว แต่ export ออกยังไม่ได้ รบกวนอาจารย์ชี้แนะด้วยครับ ขอบคุณครับ (กำลังศึกษาครับไม่ค่อยมีความรู้ด้านนี้)
ก่อนนี้เคยทำแบบเพิ่มค่าเข้าไปใหม่เลย ไม่มี ตัวเลือก (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);
}
}
จริงๆแล้ว เข้าใจว่าไม่ได้รับค่ามันมา มันถึงไม่บันทึกให้ ลองรับค่าดูครับ (ตัวที่เพิ่ม)
Quotations by หมายเหตุ #5จริงๆแล้ว เข้าใจว่าไม่ได้รับค่ามันมา มันถึงไม่บันทึกให้ ลองรับค่าดูครับ (ตัวที่เพิ่ม)
สอบถามอาจารย์ครับ ว่ามันมีวิธีรับค่าจาก topic ในตาราง rp_category เขียนลงในตาราง rp_inventory ได้เลยไหมครับ ไม่ต้องรับค่าจาก category_id ขอบคุณครับ
ที่ export ออกมาได้มันเป็นแบบนี้ครับ
ถามว่ามี มันก็มีนะ
$filedset->add('select', array(
.............
'options' => array('key1' => 'option1', 'key2' => 'option2', ......),
.............
));
1, 2 คือ key1, key2 นั่นแหละ อยากเปลี่ยนก็หาวิธีเปลี่ยนเอา
แต่การเปลี่ยนอาจไม่ง่ายนักหรอกเพราะต้องแก้ไขเยอะ ไม่แนะนำให้ทำสักเท่าไร (อยากทำก็ลองดู)
จริงๆ มันมีวิธีที่ง่ายกว่า ด้วยการสร้างคลาสขึ้นมาเพื่อแปลงค่า 1,2 ให้เป็น ข้อความ ซึ่งตัวอย่างก็อยู่ในโค้ดนั่นแหละ ลองมองหา Category ดูครับ
$filedset->add('select', array(
.............
'options' => array('key1' => 'option1', 'key2' => 'option2', ......),
.............
));
1, 2 คือ key1, key2 นั่นแหละ อยากเปลี่ยนก็หาวิธีเปลี่ยนเอา
แต่การเปลี่ยนอาจไม่ง่ายนักหรอกเพราะต้องแก้ไขเยอะ ไม่แนะนำให้ทำสักเท่าไร (อยากทำก็ลองดู)
จริงๆ มันมีวิธีที่ง่ายกว่า ด้วยการสร้างคลาสขึ้นมาเพื่อแปลงค่า 1,2 ให้เป็น ข้อความ ซึ่งตัวอย่างก็อยู่ในโค้ดนั่นแหละ ลองมองหา Category ดูครับ
ขอบคุณครับ อาจารย์ ผมลองไปไล่ดูต้นทางที่นำเข้า views\receive.php ก็เลยสร้าง models\Group.php ขึนมาใหม่ จากโค๊ตเก่าของ อาจารย์
และเพิ่ม 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' => 'Record 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' => '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;
}
กว่าจะได้แต่ละอันยากเลยครับ แต่ก็เจอปัญหาใหม่ครับ บันทึกได้แล้วแต่จะแก้ไข ส่วนตัวเลือก (ที่เพิ่มโค๊ตเข้าไปใหม่) มันไม่แก้ไขให้ เข้าใจว่ามันมีโค๊ตในส่วนแก้ไข ต้องศึกษาต่อครับ ขอบคุณต้นแบบของอาจารย์ ครับ
จริงๆ มันก็คือโปรแกรม PHP ธรรมดาครับ ถ้าจะทำอะไร ก็ต้องขียนเพิ่มเติมด้วย อะไรที่มันขาดหายไปก็ต้องเขียนใส่ครับ เช่นการแก้ไข ก็ต้องเอา value ใส่กลับเข้าไปที่ input ด้วย






