Ввод электронной почты клиента перечислит всех клиентов с определенным ключевым словом - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть «функция скидок», позволяющая продавцам добавлять свои собственные скидки, один из вариантов - поиск по покупателю, но когда вы набираете, например, @gmail, он перечисляет всех покупателей с @gmail, даже если их тысячи, которые янайти очень плохую вещь, чтобы случиться.У меня есть этот JS-код, выполняющий завершение. Я полагаю, что именно он отвечает за этот беспорядок:

Пожалуйста, проверьте код JS, если вам нужен класс PHP, я могу его предоставить.

$(document).on('keyup', '#wkslotcustomer', function(e){
//$('#wkslotcustomer').on('keyup', function(){
        var field =  $('#wkslotcustomer').val();
        if(field != '' && field.length > 2) {
            $.ajax({
                'type': 'POST',
                'url'   : modules_dir+'mpslotpricing/ajax/priceslotprocess.php',
                //'url': "{$link->getModuleLink('mpslotpricing', 'process')|addslashes}",
                'async': true,
                'dataType': 'json',
                'data': {
                    'cust_search': '1',
                    'keywords' : field,    
                },
                'success': function(result)
                {
                    if(result.found) {
                        var html = '<ul class="list-unstyled">';
                        $.each(result.customers, function() {
                            html += '<li>'+this.firstname+' '+this.lastname;
                            html += ' - '+this.email;
                            html += '<a onclick="selectcustomer('+this.id_customer+', \''+this.firstname+' '+this.lastname+'\'); return false" href="#" class="btn btn-default">'+Choose+'</a></li>';
                        });
                        html += '</ul>';
                    }
                    else
                        html = '<div class="alert alert-warning">'+no_customers_found+'</div>';
                    $('#customers').html(html);
                },
            });
        }
    });

Функция PHP:

public function searchCustomer($is_search)
    {
        $mp_product_id = Tools::getValue('mp_product_id');
        if ($is_search) {
            $searches = explode(' ', Tools::getValue('keywords'));
            $customers = array();
            $searches = array_unique($searches);
            foreach ($searches as $search) {
                if (!empty($search) && $results = Customer::searchByName($search, 50)) {
                    foreach ($results as $result) {
                        if ($result['active']) {
                            $customers[$result['id_customer']] = $result;
                        }
                    }
                }
            }

            if (count($customers)) {
                $to_return = array(
                    'customers' => $customers,
                    'found' => true
                );
            } else {
                $to_return = array('found' => false);
            }

            die(Tools::jsonEncode($to_return));
        }
    }

Как я могу принудить сначала получить полный адрес электронной почты, а затем выполнить поиск?

...