สอบถามวิธีการบันทึกปุ่ม config ใน mooziicart

ถามตอบ ปัญหาการพัฒนา Extension ไม่ว่าจะเป็น Module plugin Component หรือ แม้แต่ template การปรับแต่งโค้ด Joomla ต่างๆ ทุกเวอร์ชั่น 1.5 2.5 หรือ 3.x

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
Thanapoom1514
PHP VIP Members
PHP VIP Members
โพสต์: 4329
ลงทะเบียนเมื่อ: 04/07/2022 9:46 am

สอบถามวิธีการบันทึกปุ่ม config ใน mooziicart

โพสต์ที่ยังไม่ได้อ่าน โดย Thanapoom1514 »

สืบเนื่องจากระทู้ที่สอบถามไปที่เป็นเพิ่มปุ่มใน config ของ mzc ครับ (กระทู้ สอบถามวิธีเพิ่มปุ่มเปิดปิดใช้งานของปลั๊กอินในหน้าของ config)
ผมติ๊กรายการรหัสสำรอง และกดบันทึกครับ
Joomla Development-1.png
Joomla Development-1.png (17.97 KiB) Viewed 1016 times
หลังจากดบันทึกเสร็จปุ่มไม่ติ๊กให้ครับ
Joomla Development-1.png
Joomla Development-1.png (11.05 KiB) Viewed 1016 times
ต้องทำยังไงถึงจะกดบันทึกได้ครับ

ฟังก์ชัน event ในปลั๊กอินครับ

โค้ด: เลือกทั้งหมด

	public function onBeforeEditConfigAdminFunction(&$view)
	{
		$jshopConfig = MZCFactory::getConfig();
		$user_backupcode = $jshopConfig->user_backupcode ?  'checked="checked"' : '';
		$view->etemplatevar = '
		<tr>
									<td class="key">
									' .  JText::_("PLG_SYSTEM_MZCBACKUPCODE_USAGE") . '
									</td>
									<td>
										<input type="checkbox" name="user_backupcode" value="1" ' . $user_backupcode . '>
									</td>
								</tr>';
		
	}
ลองใช้ event onBeforeSaveConfig ก็มีเก็บค่า user_backupcode ใน array ครับ

โค้ด: เลือกทั้งหมด

	public function onBeforeSaveConfig(&$post, &$extconf)
	{
			print_r($post);
			 exit();
	}
ผลที่ได้

โค้ด: เลือกทั้งหมด

Array ( [task] => apply [tab] => 8 [enable_wishlist] => 1 [use_rabatt_code] => 1 [shop_user_guest] => 0 [without_shipping] => 1 [without_payment] => 1 [admin_show_vendors] => 1 [admin_show_units] => 1 [use_extend_attribute_data] => 1 [tax] => 1 [stock] => 1 [shop_mode] => 0 [admin_show_delivery_time] => 1 [admin_show_product_related] => 1 [admin_show_product_bay_price] => 1 [admin_show_product_basic_price] => 1 [admin_show_weight] => 1 [user_backupcode] => 1 )
ใน array มีข้อมูลของ user_backupcode แต่ในแน่ใจในส่วนของบันทึกแล้วมันไม่ติ๊กครับ
:gfb:
ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 22067
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: สอบถามวิธีการบันทึกปุ่ม config ใน mooziicart

โพสต์ที่ยังไม่ได้อ่าน โดย tsukasaz »

ลองใช้วิธีการเหมือนบันทึก config ของ plugin ครับ ถ้าเคยทำตั้งค่าใน plugin เวลาบันทึกมันจะเก็บเป็นรูปแบบ JSON ใน Field ชื่อ params ตาราง #__extensions ครับ
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)
ภาพประจำตัวสมาชิก
Thanapoom1514
PHP VIP Members
PHP VIP Members
โพสต์: 4329
ลงทะเบียนเมื่อ: 04/07/2022 9:46 am

Re: สอบถามวิธีการบันทึกปุ่ม config ใน mooziicart

โพสต์ที่ยังไม่ได้อ่าน โดย Thanapoom1514 »

ผมลองเก็บบันทึกค่า config ของ plugin ในตาราง #__extensions เขียนฟังก์ชันแบบนี้ได้ไหมครับ

โค้ด: เลือกทั้งหมด

class PlgSystemMZCBackupCode extends CMSPlugin
{
	public function getIdPlugin()
	{
		$plugin = JPluginHelper::getPlugin('system', 'mzcbackupcode');
		return $plugin->id;
		
	}
	public function onBeforeEditConfigAdminFunction(&$view)
	{
		$param_backup = $this->getDataConfig($this->getIdPlugin());
		$user_backup = json_decode($param_backup);

		$user_backupcode = $user_backup->user_backupcode == 1 ?  'checked="checked"' : '';

		$view->etemplatevar = '
							<tr>
								<td class="key">
								' .  JText::_("PLG_SYSTEM_MZCBACKUPCODE_USAGE") . '
								</td>
								<td>
									<input type="checkbox" name="user_backupcode" value="1" ' . $user_backupcode . '>
								</td>
							</tr>';
		
	}
	private function getDisplay()
	{
		$param_backup = $this->getDataConfig($this->getIdPlugin());
		$user_backup = json_decode($param_backup);
		
		return  $user_backup;
	}
	public function onBeforeAdminOptionPanelMenuDisplay(&$menu)
	{
		$user_backup = $this->getDisplay();
	
		$menu['mzcbackupcode'] = array(JText::_('PLG_SYSTEM_MZCBACKUPCODE_USAGE'), 'index.php?option=com_mooziicart&controller=mzcbackupcode', 'mzc_product-comments.png',  $user_backup->user_backupcode);
		
	}
	public function onBeforeAdminOptionPanelIcoDisplay(&$menu)
	{
		$user_backup = $this->getDisplay();

		$menu['mzcbackupcode'] = array(JText::_('PLG_SYSTEM_MZCBACKUPCODE_USAGE'), 'index.php?option=com_mooziicart&controller=mzcbackupcode', 'mzc_user-groups.png', $user_backup->user_backupcode);
	}
	public function onBeforeSaveConfig(&$post, &$extconf)
	{
		$datas = 0;
		foreach ($post as $key => $value)
		{
			if ($key == 'user_backupcode')
			{
				$datas = (int)$value;
				break;
			}
		}
		$data = $datas;
		
		$this->getSaveCofing($datas, $this->getIdPlugin());
	}
	private function getSaveCofing($data, $idPlugin)
	{
		$db = JFactory::getDbo();
		$query = $db->getQuery(true);

		$query->select($db->qn('params'));
		$query->from($db->qn('#__extensions'));
		$query->where($db->qn('extension_id') . ' = ' . (int) $idPlugin);
		$db->setQuery($query);

		$original_params = $db->loadResult();
		$params = new JRegistry($original_params);

		$params->set('user_backupcode', $data); 

		$params_json = json_encode($params->toArray());
				
		$query = $db->getQuery(true);
		$query->update($db->qn('#__extensions'));
		$query->set($db->qn('params') . ' = ' . $db->q($params_json));
		$query->where($db->qn('extension_id') . ' = ' . (int) $idPlugin);
		$db->setQuery($query);
		$db->execute();

	}
	private function getDataConfig($idPlugin)
	{
		$db = JFactory::getDbo();
		$query = $db->getQuery(true);
		$query->select($db->qn('params'));
		$query->from($db->qn('#__extensions'));
		$query->where($db->qn('extension_id') . ' = ' . (int) $idPlugin);
		$db->setQuery($query);

		$original_params = $db->loadResult();
		return  $original_params;
	}
}
:gfb:
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 3