กดไปแก้ไขชื่อข้อมูลตัวนี้ครับ เปลี่ยนชื่อเป็น ทดสอบ เป็น test ครับ จากนั้นก็กดบันทึกครับ ได้ข้อมูลใหม่ครับ และข้อมูลอันที่ต้องแก้ไข มันยังไม่แก้ไขครับ โค้ดใน Models ไฟล์ page.php
โค้ด: เลือกทั้งหมด
public function getForm($data = array(), $loadData = true)
{
return $this->loadForm('com_mypagedesign.page', 'page', array('control' => 'jform', 'load_data' => $loadData));
}
public function getTable($name = 'Page', $prefix = 'MypagedesignTable', $options = array())
{
return parent::getTable($name, $prefix, $options);
}
protected function loadFormData()
{
// Check the session for previously entered form data.
$data = JFactory::getApplication()->getUserState('com_mypagedesign.edit.page.data', array());
if (empty($data))
{
$data = $this->getItem();
}
$this->preprocessData('com_mypagedesign.page', $data);
return $data;
}
public function getItem($pk = null)
{
$id = JFactory::getApplication()->input->get->get('id');
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('p.page_name, p.language, p.state, p.created, r.id AS rid, r.page_id AS rpid, r.ordinal_page AS r_ordi,r.column_type AS r_col_tyle, c.id AS cid, c.row_id AS crid, c.ordinal AS c_ordi, c.class')
->from('#__mpds_pages AS p')
->join('left', '#__mpds_rows AS r ON p.id = r.page_id')
->join('left', '#__mpds_columns AS c ON r.id = c.row_id')
->where($db->qn('p.id') . ' = ' . $db->q($id))
->order($db->qn('r.ordinal_page') . ' ASC');
$db->setQuery($query);
$result = $db->loadAssocList();
return $result;
}
public function save($data)
{
$datas = JFactory::getApplication()->input->post->get('jform', array(), 'array');
$user_id = JFactory::getUser()->id;
$date = date('Y-m-d H:i:s');
$data['created_by'] = $user_id;
$data['created'] = $date;
$data['modified_by'] = $user_id;
$data['modified'] = $date;
$result = parent::save($data);
if (!$result)
{
return false;
}
$page_id = empty($data['id']) ? $this->getState($this->getName() . '.id') : $data['id'];
// for update
// if (isset($data['col_id']) && $data['col_id'] != '') {
// $tb->load($data['col_id']);
// }
// row
foreach ($datas['row'] as $key1 => $row_no) {
$tb = $this->getTable('rows');
// print_r($key1);
// echo '<br/><br/>';
// print_r($row_no);
if (isset($row_no[0][0])) { // edit
$tb->load($row_no[0][0]); // id
};
$data_column_type = '';
foreach ($row_no as $date_row_no => $date_row )
{
$data_column_type = $date_row[1];
}
$tb->bind(array(
'page_id' => $page_id,
'ordinal_page' => (isset($row_no[0][1])) ? $row_no[0][1] : $key1, // ordinal
'column_type' => $data_column_type
));
if (!$tb->store()) {
return false;
}
$row_id = $tb->id;
if (isset($row_no[0][0])) { // edit
continue;
}
// // column
// foreach ($datas['row'][$key1] as $key2 => $col_no)
// {
// $tb = $this->getTable('columns');
// $tb->bind(array(
// 'row_id' => $row_id,
// 'class' => $col_no[0],
// 'ordinal' => $key2
// ));
// if (!$tb->store()) {
// return false;
// }
// }
} //exit();
return $result;
}
เบี้องต้นผมลองเช็ค print_r() ดูค่าไอดีแล้ว ว่ามีไอดีครับ
print_r() ในไฟล์ edit.php
โค้ด: เลือกทั้งหมด
print_r($this->item);
โค้ด: เลือกทั้งหมด
Joomla\CMS\Object\CMSObject Object ( [_errors:protected] => Array ( ) [id] => 103 [page_name] => test [state] => 1 [language] => en-GB [created_by] => 923 [created] => 2023-04-04 14:36:35 [modified_by] => 923 [modified] => 2023-04-04 14:36:35
หลังจากลบฟังก์ชัน เข้าไปคลิกข้อมูลที่ชื่อว่า test เข้าไปแก้ข้อมูลในฟอร์มกับกดบันทึก ผลที่ได้
ต้องปรับโค้ดในส่วนนี้ยังไงหรอครับ
ฟังก์ชันที่ลองลบไปใน Models ไฟล์ page.php
โค้ด: เลือกทั้งหมด
public function getItem($pk = null)
{
$id = JFactory::getApplication()->input->get->get('id');
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('p.page_name, p.language, p.state, p.created, r.id AS rid, r.page_id AS rpid, r.ordinal_page AS r_ordi,r.column_type AS r_col_tyle, c.id AS cid, c.row_id AS crid, c.ordinal AS c_ordi, c.class')
->from('#__mpds_pages AS p')
->join('left', '#__mpds_rows AS r ON p.id = r.page_id')
->join('left', '#__mpds_columns AS c ON r.id = c.row_id')
->where($db->qn('p.id') . ' = ' . $db->q($id))
->order($db->qn('r.ordinal_page') . ' ASC');
$db->setQuery($query);
$result = $db->loadAssocList();
return $result;
}