Всем привет! Решил переделать категорию товара из select в input в стиле автозаполнения, получилось, но он выводит информацию в виде id категории почему-то. Хочу сделать чтобы отображал в виде имя категории Код: <div class="form-group"> <label class="col-sm-2 control-label" for="input-main_category_id"> <span data-toggle="tooltip" title="{{ help_main_category }}">{{ entry_main_category }}</span> </label> <div class="col-sm-10"> <input type="text" name="main_category" value="{{ main_category_id }}" placeholder="{{ entry_main_category_id }}" id="input-main_category_id" class="form-control"/> <input type="hidden" name="main_category_id" value="{{ main_category_id }}"/> </div> </div> Код: // Main category $('input[name=\'main_category\']').autocomplete({ 'source': function(request, response) { $.ajax({ url: 'index.php?route=catalog/category/autocomplete&user_token={{ user_token }}&filter_name=' + encodeURIComponent(request), dataType: 'json', success: function(json) { response($.map(json, function(item) { return { label: item['name'], value: item['category_id'] } })); } }); }, 'select': function(item) { $('input[name=\'main_category\']').val(item['label']); $('input[name=\'main_category_id\']').val(item['value']); } });
По-умолчанию В "Главной категории" отображаются категории в виде списка и когда сохраняешь значение, то оно отображается. Как реализовал автозаполнение, то после сохранение, значение в "Главной категории" пустые.
Я добавляю "Категория 1" в "Главную категорию" После сохранения товара "Категория 1" появляется в "Категории", а в "Главной категории" исчезает Правильно, чтобы "Категория 1" была везде.
Код: <div class="form-group"> <label class="col-sm-2 control-label" for="input-category"><span data-toggle="tooltip" title="{{ help_category }}">{{ entry_category }}</span></label> <div class="col-sm-10"> <input type="text" name="category" value="" placeholder="{{ entry_category }}" id="input-category" class="form-control"/> <div id="product-category" class="well well-sm" style="height: 150px; overflow: auto;"> {% for product_category in product_categories %} <div id="product-category{{ product_category.category_id }}"><i class="fa fa-minus-circle"></i> {{ product_category.name }} <input type="hidden" name="product_category[]" value="{{ product_category.category_id }}"/> </div> {% endfor %}</div> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label" for="select-main_category_id"><span data-toggle="tooltip" title="{{ help_main_category }}">{{ entry_main_category }}</span></label> <div class="col-sm-10"> <input type="text" name="main_category" value="{{ main_category }}" placeholder="{{ entry_main_category_id }}" id="input-main_category_id" class="form-control"/> <input type="hidden" name="main_category_id" value="{{ main_category_id }}"/> </div> </div>
Я его закомментировал ) Код: <!-- <select name="main_category_id" class="form-control"> <option value="0" selected="selected">{{ text_none }}</option> {% for category in categories %} {% if category.category_id == main_category_id %} <option value="{{ category.category_id }}" selected="selected">{{ category.name }}</option> {% else %} <option value="{{ category.category_id }}">{{ category.name }}</option> {% endif %} {% endfor %} </select> -->
Ну так проблема в другом. В селекте название категории выводится через перебор селекта. А по умолчанию нет такого поля main_category. Существует только поле main_category_id, поэтому название пустое. Ну это наиболее вероятный вариант, так как вы код не любите демонстрировать и остаётся только палкой в воде ковырять.
Контроллер Код: // Categories $this->load->model('catalog/category'); $data['categories'] = $this->model_catalog_category->getAllCategories(); if (isset($this->request->post['main_category_id'])) { $data['main_category_id'] = $this->request->post['main_category_id']; } elseif (isset($product_info)) { $data['main_category_id'] = $this->model_catalog_product->getProductMainCategoryId($this->request->get['product_id']); } else { $data['main_category_id'] = 0; } if (isset($this->request->post['product_category'])) { $categories = $this->request->post['product_category']; } elseif (isset($this->request->get['product_id'])) { $categories = $this->model_catalog_product->getProductCategories($this->request->get['product_id']); } else { $categories = array(); } $data['product_categories'] = array(); foreach ($categories as $category_id) { $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { $data['product_categories'][] = array( 'category_id' => $category_info['category_id'], 'name' => ($category_info['path']) ? $category_info['path'] . ' > ' . $category_info['name'] : $category_info['name'] ); } } Модель Код: if (isset($data['main_category_id']) && $data['main_category_id'] > 0) { $this->db->query("DELETE FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND category_id = '" . (int)$data['main_category_id'] . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "product_to_category SET product_id = '" . (int)$product_id . "', category_id = '" . (int)$data['main_category_id'] . "', main_category = 1"); } elseif (isset($data['product_category'][0])) { $this->db->query("UPDATE " . DB_PREFIX . "product_to_category SET main_category = 1 WHERE product_id = '" . (int)$product_id . "' AND category_id = '" . (int)$data['product_category'][0] . "'"); }