OpenCart 🇺🇦

Схема

public mixed autocomplete ( )

Аргументы

Аргумент Возможный тип Описание
У метода нет аргументов

Описание

Метод пока еще не документирован.

Исходный код

$json = array();

if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_model']) || isset($this->request->get['filter_category_id'])) {
	$this->load->model('catalog/product');
	$this->load->model('catalog/option');

	if (isset($this->request->get['filter_name'])) {
		$filter_name = $this->request->get['filter_name'];
	} else {
		$filter_name = '';
	}

	if (isset($this->request->get['filter_model'])) {
		$filter_model = $this->request->get['filter_model'];
	} else {
		$filter_model = '';
	}

	if (isset($this->request->get['limit'])) {
		$limit = $this->request->get['limit'];	
	} else {
		$limit = 20;	
	}			

	$data = array(
		'filter_name'  => $filter_name,
		'filter_model' => $filter_model,
		'start'        => 0,
		'limit'        => $limit
	);

	$results = $this->model_catalog_product->getProducts($data);

	foreach ($results as $result) {
		$option_data = array();

		$product_options = $this->model_catalog_product->getProductOptions($result['product_id']);	

		foreach ($product_options as $product_option) {
			$option_info = $this->model_catalog_option->getOption($product_option['option_id']);

			if ($option_info) {				
				if ($option_info['type'] == 'select' || $option_info['type'] == 'radio' || $option_info['type'] == 'checkbox' || $option_info['type'] == 'image') {
					$option_value_data = array();

					foreach ($product_option['product_option_value'] as $product_option_value) {
						$option_value_info = $this->model_catalog_option->getOptionValue($product_option_value['option_value_id']);

						if ($option_value_info) {
							$option_value_data[] = array(
								'product_option_value_id' => $product_option_value['product_option_value_id'],
								'option_value_id'         => $product_option_value['option_value_id'],
								'name'                    => $option_value_info['name'],
								'price'                   => (float)$product_option_value['price'] ? $this->currency->format($product_option_value['price'], $this->config->get('config_currency')) : false,
								'price_prefix'            => $product_option_value['price_prefix']
							);
						}
					}

					$option_data[] = array(
						'product_option_id' => $product_option['product_option_id'],
						'option_id'         => $product_option['option_id'],
						'name'              => $option_info['name'],
						'type'              => $option_info['type'],
						'option_value'      => $option_value_data,
						'required'          => $product_option['required']
					);	
				} else {
					$option_data[] = array(
						'product_option_id' => $product_option['product_option_id'],
						'option_id'         => $product_option['option_id'],
						'name'              => $option_info['name'],
						'type'              => $option_info['type'],
						'option_value'      => $product_option['option_value'],
						'required'          => $product_option['required']
					);				
				}
			}
		}

		$json[] = array(
			'product_id' => $result['product_id'],
			'name'       => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8')),	
			'model'      => $result['model'],
			'option'     => $option_data,
			'price'      => $result['price']
		);	
	}
}

$this->response->setOutput(json_encode($json));