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

สอบถามผู้รู้ เพิ่มตัวเลือกหมวดหมู่ใน 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++;
}
04 ก.ย. 2562 11 1,583

https://github.com/...dels/receive.php#L69

รับค่ามา แล้วก็มีคอลัมน์ ตรงกันในตาราง แค่นั้น

ลอง print_r($_POST); หรือ print_r($repair); ออกมาดู
#1

สอบถามผู้รู้ เพิ่มตัวเลือกหมวดหมู่ใน models repair
สอบถามเพิ่มเติมครับ ผม ใช้โค๊ตเพิ่มไปใน 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);
}
}
#2

สอบถามผู้รู้ เพิ่มตัวเลือกหมวดหมู่ใน models repair
อันนี้รูปหน้า views ครับ
repair\views\receive.php
#3

สอบถามผู้รู้ เพิ่มตัวเลือกหมวดหมู่ใน models repair
รูปนี้ ตาราง rp_category ครับ
#4

จริงๆแล้ว เข้าใจว่าไม่ได้รับค่ามันมา มันถึงไม่บันทึกให้ ลองรับค่าดูครับ (ตัวที่เพิ่ม)
#5

สอบถามผู้รู้ เพิ่มตัวเลือกหมวดหมู่ใน models repair
อ้างอิงจาก ความคิดเห็น #5จริงๆแล้ว เข้าใจว่าไม่ได้รับค่ามันมา มันถึงไม่บันทึกให้ ลองรับค่าดูครับ (ตัวที่เพิ่ม)


สอบถามอาจารย์ครับ ว่ามันมีวิธีรับค่าจาก topic ในตาราง rp_category เขียนลงในตาราง rp_inventory ได้เลยไหมครับ ไม่ต้องรับค่าจาก category_id ขอบคุณครับ
#6

สอบถามผู้รู้ เพิ่มตัวเลือกหมวดหมู่ใน models repair
ที่ export ออกมาได้มันเป็นแบบนี้ครับ
#7

ถามว่ามี มันก็มีนะ
$filedset->add('select', array(
.............
'options' => array('key1' => 'option1', 'key2' => 'option2', ......),
.............
));
1, 2 คือ key1, key2 นั่นแหละ อยากเปลี่ยนก็หาวิธีเปลี่ยนเอา
แต่การเปลี่ยนอาจไม่ง่ายนักหรอกเพราะต้องแก้ไขเยอะ ไม่แนะนำให้ทำสักเท่าไร (อยากทำก็ลองดู)

จริงๆ มันมีวิธีที่ง่ายกว่า ด้วยการสร้างคลาสขึ้นมาเพื่อแปลงค่า 1,2 ให้เป็น ข้อความ ซึ่งตัวอย่างก็อยู่ในโค้ดนั่นแหละ ลองมองหา Category ดูครับ
#8

สอบถามผู้รู้ เพิ่มตัวเลือกหมวดหมู่ใน models repair
ขอบคุณครับ อาจารย์ ผมลองไปไล่ดูต้นทางที่นำเข้า 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' => '{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;
}
กว่าจะได้แต่ละอันยากเลยครับ แต่ก็เจอปัญหาใหม่ครับ บันทึกได้แล้วแต่จะแก้ไข ส่วนตัวเลือก (ที่เพิ่มโค๊ตเข้าไปใหม่) มันไม่แก้ไขให้ เข้าใจว่ามันมีโค๊ตในส่วนแก้ไข ต้องศึกษาต่อครับ ขอบคุณต้นแบบของอาจารย์ ครับ
#9

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

จริงๆ มันก็คือโปรแกรม PHP ธรรมดาครับ ถ้าจะทำอะไร ก็ต้องขียนเพิ่มเติมด้วย อะไรที่มันขาดหายไปก็ต้องเขียนใส่ครับ เช่นการแก้ไข ก็ต้องเอา value ใส่กลับเข้าไปที่ input ด้วย
#11
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg, png ขนาดไฟล์ไม่เกิน 2M