Предварительный магазин - Бэк-офис - Добавить заказ показать адрес


Когда я нахожусь в бэк-офисе и пытаюсь добавить заказ и выполнить поиск своих клиентов, я хотел бы показать адрес клиента в маленьком окошке. Добавить заказ - Поиск скриншота клиента

В /темы/по умолчанию/шаблон/контроллеры/заказы/форма.tpl у меня есть:

 function searchCustomers()
   {
..........................
            html += '<div class="panel-heading">'+this.company+' '+this.firstname+' '+this.lastname;
            html += '<span class="pull-right">#'+this.id_customer+'</span></div>';
            html += '<span>'+this.email+'</span><br/>';
            html += '<span>'+this.addresses+'</span><br/>';

Но это просто отображается как "неопределенный" , поэтому я думаю, что мне нужно что-то добавить в controllers/admin/AdminCustomersController.php (Поисковые запросы) но я не уверен.

Может кто-нибудь сказать мне, что код, который я пропустил?

Я использую Prestashop 1.6.1.7

Author: qqlaw, 2017-02-17

1 answers

Чтобы отобразить данные, вам нужно получить данные, если их там нет. В этом случае this.address уведомляет о неопределенном, потому что он "не существует".

Вы можете использовать это в override/controllers/admin/AdminCustomerControllers.php

public function ajaxProcessSearchCustomers()
    {
        $searches = explode(' ', Tools::getValue('customer_search'));
        $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']) {
                        $customer = new Customer($result['id_customer']);
                        $addresses = $customer->getAddresses($this->context->language->id);
                        $result['addresses'] = '';
                        if(is_array($addresses) and !empty($addresses))
                        {
                            foreach ($addresses as $address) {
                                $result['addresses'] .= $address['alias'].'<br />';
                            }
                        }
                        $customers[$result['id_customer']] = $result;
                    }
                }
            }
        }

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

        $this->content = Tools::jsonEncode($to_return);
    }

Это определит адреса (только псевдонимы адресов, если вам нужно больше, просто измените строку $result['addresses'] .= $address['alias'].'<br />';.

Не забудьте установить правильный класс class AdminCustomersController extends AdminCustomersControllerCore, а затем удалить файл cache/class_index.php

 1
Author: sadlyblue, 2017-02-17 17:23:50