Задать вопрос
@PoodingRex

Почему foreach (opencart) выдаёт только последний результат?

Всех приветствую. Подскажите, пожалуйста, что делаю не так. Пытаюсь вывести меню следующего вида:
-Категория 1
---производитель 2
---производитель 6
-Категория 2
---производитель 3
---производитель 5
---производитель 2
-Категория 3
---производитель 1

т.е. под категорией должны появиться производители, содержащиеся в ней.
И почти всё получается, кроме одного - во всех категориях выводятся производители, принадлежащие последней категории.

В контроллере это выглядит так:
$categories = $this->model_catalog_category->getCategories(0);

		foreach ($categories as $category) {
			if ($category['top']) {
				

                // Level 2
				$children_data = array(); //1

				$children = $this->model_catalog_category->getCategories($category['category_id']); //2

				foreach ($children as $child) { //3
					$filter_data = array(
						'filter_category_id'  => $child['category_id'],
						'filter_sub_category' => true
					);

					$children_data[] = array(
						'name'  => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
						'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
					);
				}
                
				// Level 1
				$data['categories'][] = array(
					'name'     => $category['name'],
					'children' => $children_data,
					'column'   => $category['column'] ? $category['column'] : 1,
					'href'     => $this->url->link('product/category', 'path=' . $category['category_id'])
				);
                
                
                //manufacturers menu
                
                $manufacturers = $this->model_catalog_category->getManufacturers($category['category_id']); //2
                
                $data['manufacturers'] = array(); //1
                foreach ($manufacturers as $manufacturer)  { //3
                       $data['manufacturers'][] = array (
                       'manufacturer_id' => $manufacturer['manufacturer_id'],
                       'thumb' => $manufacturer['image'],
                       'name' => $manufacturer['name'],
                       'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '&manufacturer_id=' . $manufacturer['manufacturer_id'])
                        );
                }
                 
                
			}
		}


В view так:

<?php foreach ($categories as $category) { ?>
            <b><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></b> <br> 
            <?php foreach ($manufacturers as $manufacturer) { ?>
                     ----    <a href="<?php echo $manufacturer['href'] ?>"><?php echo $manufacturer['name'] ?> (<?php echo $manufacturer['thumb'] ?>)</a> <br>
            <?php } ?>
        <?php } ?>


Если аналогичным образом делаю для level 2- всё отлично работает. С производителями - никак =(

Заранее благодарю за помощь.
  • Вопрос задан
  • 361 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы