Magento 2 的快速订购模块
Quick Order module for Magento 2
我想在 magento 2 中创建一个 quickorder 模块。我遇到了代码路径块问题,ajax 等。请有人帮助我解决这个问题。我怎样才能生成 JS/Ajax 自动搜索文件,以便按产品名称或 SKU 搜索产品,然后将该产品添加到购物车页面。我尝试帮助像 "MageWorx_SearchSuitAutoComplete" 这样的模块,但它产生了一个问题。请帮助我。
制作一个控制器,前面的名字像Quickorder/index/index,现在在Quickorder上执行一个功能。
<?php
namespace CompanyName\CustomApi\Controller\Index;
class Index extends \Magento\Framework\App\Action\Action
{
protected $resultPageFactory;
protected $httpClientFactory;
protected $productCollectionFactory;
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $resultPageFactory,
\Magento\Framework\HTTP\ZendClientFactory $httpClientFactory,
\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
\Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
) {
$this->resultPageFactory = $resultPageFactory;
$this->productCollectionFactory = $productCollectionFactory;
$this->_httpClientFactory = $httpClientFactory;
$this->resultJsonFactory = $resultJsonFactory;
parent::__construct($context);
}
public function execute(){
$search_text = $this->getRequest()->getPost('search_text');
$collection = $this->_productCollectionFactory->create();
$collection->addAttributeToSelect(array('name'))->addAttributeToFilter('name',
array('like' => $search_text.' %'),
array('like' => '% '.$search_text.' %'),
array('like' => '% '.$search_text)
));
echo "<pre>";
print_r($collection->getData());
die();
}
在输入类型上创建 jquery 函数并请求 ajax 使用 keyup 调用。
$('#quick-search').keyup(function(){
var search_text = jQuery("#quick-search").val();
try {
jQuery.ajax({
url : '<?php echo $block->getUrl('quickorder/index/index') ?>',
dataType : 'json',
data: { 'search_text' : search_text },
type : 'post',
success : function(data) {
jQuery('.main-search-results').html(data.products);
}
});
} catch (e) {
}
});
或者你也可以用 require js 代替这个 jquery.
谢谢
我想在 magento 2 中创建一个 quickorder 模块。我遇到了代码路径块问题,ajax 等。请有人帮助我解决这个问题。我怎样才能生成 JS/Ajax 自动搜索文件,以便按产品名称或 SKU 搜索产品,然后将该产品添加到购物车页面。我尝试帮助像 "MageWorx_SearchSuitAutoComplete" 这样的模块,但它产生了一个问题。请帮助我。
制作一个控制器,前面的名字像Quickorder/index/index,现在在Quickorder上执行一个功能。
<?php
namespace CompanyName\CustomApi\Controller\Index;
class Index extends \Magento\Framework\App\Action\Action
{
protected $resultPageFactory;
protected $httpClientFactory;
protected $productCollectionFactory;
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $resultPageFactory,
\Magento\Framework\HTTP\ZendClientFactory $httpClientFactory,
\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
\Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
) {
$this->resultPageFactory = $resultPageFactory;
$this->productCollectionFactory = $productCollectionFactory;
$this->_httpClientFactory = $httpClientFactory;
$this->resultJsonFactory = $resultJsonFactory;
parent::__construct($context);
}
public function execute(){
$search_text = $this->getRequest()->getPost('search_text');
$collection = $this->_productCollectionFactory->create();
$collection->addAttributeToSelect(array('name'))->addAttributeToFilter('name',
array('like' => $search_text.' %'),
array('like' => '% '.$search_text.' %'),
array('like' => '% '.$search_text)
));
echo "<pre>";
print_r($collection->getData());
die();
}
在输入类型上创建 jquery 函数并请求 ajax 使用 keyup 调用。
$('#quick-search').keyup(function(){
var search_text = jQuery("#quick-search").val();
try {
jQuery.ajax({
url : '<?php echo $block->getUrl('quickorder/index/index') ?>',
dataType : 'json',
data: { 'search_text' : search_text },
type : 'post',
success : function(data) {
jQuery('.main-search-results').html(data.products);
}
});
} catch (e) {
}
});
或者你也可以用 require js 代替这个 jquery.
谢谢