สอบถามเอาค่าจากคำค้นหาต้องเอาค่ามาจากไหน

ถามตอบ ปัญหาการพัฒนา 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

สอบถามเอาค่าจากคำค้นหาต้องเอาค่ามาจากไหน

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

สอบถามครับ ถ้าผมจะเอาค่าจากค้นหาจากสินค้า ดึงค่าจากไหนหรอครับ เพื่อเอาไปทำเอาค่าไปเก็บ web storage ทำโมดูลแสดงประวัติค้นหาสินค้าครับ

โค้ดในไฟล์ helper.php

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

<?php
/**
 * @package	Module MooZiiCart History Search
 * @subpackage	mod_mzc_history_search
 * @author	Mindphp Developer Teams
 * @copyright	Copyright (C) 2022 Mindphp. All rights reserved.
 * @license	GNU General Public License version 2 or later;
 */
defined('_JEXEC') or die;

class ModMZCHistorySearch
{

	public static function getProductId()
	{
		
		$input = JFactory::getApplication()->input;
		if ($input->get('option') == 'com_mooziicart' && $input->get('task') == 'view')
		{
			return $input->get('product_id');
		}
		
	}

	public static function getKeyword()
	{
		$input = JFactory::getApplication()->input;
		if ($input->get('option') == 'com_mooziicart' && $input->get('controller') == 'search')
		{
			return $input->get('search');
		}
		
	}

	public static function getConfigData($params)
	{
		$arr_config = array ();
		$arr_config[] = 'data-item-limit="' . $params->get('data_item_limit', 5) . '"';

		return $arr_config;
	}

}
:gfb:
ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 21990
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: สอบถามเอาค่าจากคำค้นหาต้องเอาค่ามาจากไหน

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

"คำค้นหา" ปกติจะส่งผ่านฟอร์มอยู่แล้ว เป็น GET หรือ POST ให้เช็คจากค่าที่ส่งตอนที่กด submit ตัวค้นหา

ใน joomla เวลาจะรับค่าจาก GET หรือ POST จะใช้ JFactory::getApplication()->input

ตัวอย่าง เวลาส่งค่า GET ผ่าน URL มา http://localhost/index.php?name=test แล้วอยากจะดึงค่า name มาใช้

php ปกติ

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

<?php
echo $_GET['name'];

ใน joomla

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

<?php
$input = JFactory::getApplication()->input;
echo $input->get('name');
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: สอบถามเอาค่าจากคำค้นหาต้องเอาค่ามาจากไหน

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

tsukasaz เขียน: 07/10/2022 2:34 pm "คำค้นหา" ปกติจะส่งผ่านฟอร์มอยู่แล้ว เป็น GET หรือ POST ให้เช็คจากค่าที่ส่งตอนที่กด submit ตัวค้นหา

ใน joomla เวลาจะรับค่าจาก GET หรือ POST จะใช้ JFactory::getApplication()->input

ตัวอย่าง เวลาส่งค่า GET ผ่าน URL มา http://localhost/index.php?name=test แล้วอยากจะดึงค่า name มาใช้

php ปกติ

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

<?php
echo $_GET['name'];

ใน joomla

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

<?php
$input = JFactory::getApplication()->input;
echo $input->get('name');
ถ้าเป็นฟอร์มแบบ post ผมเขียนแบบนี้ใช่ไหม

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

$input->post('search');
ถ้าใช่ ผมลองดึงค่า post ในฟอร์มของโมดูล mzc search ค้นหา ผมลองค้นหาและ echo ไม่ขึ้นแสดงให้ครับ

ฟอร์มของโมดูล mzc search

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

	<h3>ค้นหาสินค้า</h3>
						<form class="form-inline mod-shop-search" name = "searchForm" method = "post" action="/joomla_3_10/index.php?option=com_mooziicart&amp;controller=search&amp;task=result&amp;Itemid=0" onsubmit = "return isEmptyValue(jQuery('#jshop_search').val())">
	<input type="hidden" name="setsearchdata" value="1">
	<input type = "hidden" name = "category_id" value = "0" />
	<input type = "hidden" name = "search_type" value = "any" />
	<input type = "text" class = "inputbox input-small" placeholder="ค้นหา" name = "search" id = "jshop_search" value = "" />
	<input class = "button btn" type = "submit" value = "ค้นหา" />
:gfb:
ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 21990
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: สอบถามเอาค่าจากคำค้นหาต้องเอาค่ามาจากไหน

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

ไม่มีคำสั่งนี้ครับ

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

$input->post('search');

อธิบายเพิ่มเติม
กรณีต้องการรับ GET หรือ POST แบบไม่เจาะจง คือ ส่งมาแบบ GET ก็ได้ POST ก็ได้ จะใช้

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

$input->get('search');
ถ้าต้องการรับค่าเฉพาะ POST ต้องใช้เป็น

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

$input->post->get('search');
ถ้าต้องการรับค่าเฉพาะ GET ต้องใช้เป็น

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

$input->get->get('search');
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: สอบถามเอาค่าจากคำค้นหาต้องเอาค่ามาจากไหน

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

เหมือนผมลอง echo และกดค้นหาในโมดูล mzc search แล้วมันไม่ขึ้นแสดงข้อความที่ค้นหาขึ้นมาครับ
ไฟล์ helper.php

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

	public static function getKeyword()
	{
		$input = JFactory::getApplication()->input;
		if ($input->get('option') == 'com_mooziicart' && $input->get('controller') == 'search')
		{
			return $input->get('search');
		}
		
	}
ไฟล์ default.php

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

	<?php if ($keyword = ModMZCHistorySearch::getKeyword()): ?>
		<div class="mod-mzc-history-search-keyword hidden"><?php echo $keyword; ?></div>
	<?php endif; ?>
ไฟล์ php

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

<?php
/**
 * @package	Module MooZiiCart History Search
 * @subpackage	mod_mzc_history_search
 * @author	Mindphp Developer Teams
 * @copyright	Copyright (C) 2020 Mindphp. All rights reserved.
 * @license	GNU General Public License version 2 or later;
 */
defined('_JEXEC') or die;

require_once __DIR__ . '/helper.php';


if (!file_exists(JPATH_SITE . '/components/com_mooziicart/mooziicart.php'))
{
	JError::raiseError(500, "Please install component \"Mooziicart\"");
}

require_once (JPATH_SITE . '/components/com_mooziicart/lib/factory.php');
require_once (JPATH_SITE . '/components/com_mooziicart/lib/functions.php');

$config_data = ModMZCHistorySearch::getConfigData($params);

JText::script('MOD_MZC_HISTORY_SEARCH_WEB_STORAGE_NOT_SUPPORT');
JFactory::getDocument()->addStyleSheet(JUri::root() . 'modules/mod_mzc_history_search/assets/css/mod_mzc_history_search.css');
JFactory::getDocument()->addScript(JUri::root() . 'modules/mod_mzc_history_search/assets/js/mod_mzc_history_search.js');

require JModuleHelper::getLayoutPath("mod_mzc_history_search", "default");
ผมต้องดึงค่าจากที่ไหนหรอครับ ค้นหาคำสินค้า
:gfb:
ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 21990
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: สอบถามเอาค่าจากคำค้นหาต้องเอาค่ามาจากไหน

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

ลองปรับวิธีการดึงค่าเป็น

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

$input = JFactory::getApplication()->input->getArray();
echo $input['search'];

อีกจุดนึงตรงส่วนแสดงผลเห็นมี class ชื่อ hidden บาง template มันจะเป็น css สำหรับซ่อนครับ
Joomla Development-1.png
Joomla Development-1.png (34.02 KiB) Viewed 647 times
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)
ตอบกลับโพส

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

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