Magento 2的快速订购模块

时间:2017-07-24 06:42:13

标签: magento

我想在magento 2中创建一个快速排序模块。我遇到了代码路径块,ajax等问题。有人可以帮我解决这个问题。如何生成JS / Ajax自动搜索文件,用于按产品名称或SKU搜索产品,然后将该产品添加到购物车页面。我尝试帮助一个模块,例如" MageWorx_SearchSuitAutoComplete"但它产生了一个问题。请帮助我。

1 个答案:

答案 0 :(得分:0)

创建一个名为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函数并使用keyup请求ajax调用。

$('#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。

谢谢