Evgenka

[Решено] Прошу помощи с циклами foreach

Рекомендуемые сообщения

Evgenka    1

Всем привет.

Стоит модуль покупки в 1 клик. Список с заказами в админке выводит в отдельный лист заказов catapulta_list.tpl

К каждому товару присвоен поставщик. Пытаюсь добавить вывод поставщика заказанного товара в листе заказов.

В контроллере дописал цикл, в модели так же написал запрос к БД.

В массиве к каждому товару выводится shop_name

 

			$results = $this->model_catalog_catapulta->getOrders($data);

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

				$url .= '&order_id=' . $result['order_id'];

				$action[] = array(
					'text' => $this->language->get('button_delete'),
					'href' => $this->url->link('catalog/catapulta/delete', 'token=' . $this->session->data['token'] . $url, 'SSL')
				);
				
				$url .= '&product_id=' . $result['product_id'];

				$action[] = array(
					'text' => $this->language->get('button_cancel'),
					'href' => $this->url->link('catalog/catapulta/cancel', 'token=' . $this->session->data['token'] . $url, 'SSL')
				);				

				$this->data['orders'][] = array(
					'order_id' => $result['order_id'],
					'customer_name' => $result['customer_name'],
					'contact' => $result['contact'],
					'product_name' => $result['product_name'],
					'product_model' => $result['product_model'],
					'product_href' => $result['product_id'],
					'product_id' => $result['product_id'],
					'product_model_href' => $this->url->link('catalog/product/update', 'token=' . $this->session->data['token'] . '&product_id=' . $result['product_id'] . $url, 'SSL'),
					'total' => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
					'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
					'date_added_time' => date($this->language->get('date_format_short_time'), strtotime($result['date_added'])),
					'selected' => isset($this->request->post['selected']) && in_array($result['order_id'], $this->request->post['selected']),
					'action' => $action
				);
				
			$this->data['products'] = array();

			$products = $this->model_catalog_catapulta->getOrderProducts($result['order_id']);
				foreach ($products as $product) {

				$this->data['products'][] = array(
                    'shop_name'        => $product['shop_name']
				);
			}				
		}

 

Теперь пытаюсь все это дело вывести в catapulta_list.tpl и вот тут возникает проблема.

Делаю это так:

						<?php if ($orders) { ?>
						<?php foreach ($orders as $order) { ?>
						<tr>
							<td style="text-align: center;"><?php if ($order['selected']) { ?>
								<input type="checkbox" name="selected[]" value="<?php echo $order['order_id']; ?>" checked="checked" />
								<?php } else { ?>
								<input type="checkbox" name="selected[]" value="<?php echo $order['order_id']; ?>" />
								<?php } ?></td>
							<td class="right"><?php echo $order['order_id']; ?></td>
							<td class="right"><?php echo $order['customer_name']; ?></td>
							<td class="right"><?php echo $order['contact']; ?></td>
							
							<?php foreach ($products as $product) { ?>							
							<td class="right"><?php echo $product['shop_name']; ?></td>	
							<?php } ?>
                          
							<td class="right"><a href="http://site.ru/index.php?route=product/product&path=154&product_id=<?php echo $order['product_href']; ?>"target="_blank"><?php echo $order['product_name']; ?></a></td>
							<td class="right"><a href="<?php echo $order['product_model_href']; ?>"><?php echo $order['product_model']; ?></td>
							<td class="right"><?php echo $order['total']; ?></td>
							<td class="left"><?php echo $order['date_added_time']; ?></td>
							<td class="right"><?php foreach ($order['action'] as $action) { ?>
								[ <a href="<?php echo $action['href']; ?>"><?php echo $action['text']; ?></a> ]
								<?php } ?></td>
						</tr>
						<?php } ?>
						<?php } else { ?>
						<tr>
							<td class="center" colspan="7"><?php echo $text_no_results; ?></td>
						</tr>
						<?php } ?>

 

Но при таком виде всем товарам присваивается только первый поставщик из цикла и все, у всех один и тот же.

Судя по всему в цикле <?php foreach ($products as $product) { ?> ошибка.

Что не правильно сделал?

Спасибо.

Изменено пользователем Evgenka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
shoputils    234

Так сделайте:Контроллер:

Скрытый текст



			$results = $this->model_catalog_catapulta->getOrders($data);

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

				$url .= '&order_id=' . $result['order_id'];

				$action[] = array(
					'text' => $this->language->get('button_delete'),
					'href' => $this->url->link('catalog/catapulta/delete', 'token=' . $this->session->data['token'] . $url, 'SSL')
				);
				
				$url .= '&product_id=' . $result['product_id'];

				$action[] = array(
					'text' => $this->language->get('button_cancel'),
					'href' => $this->url->link('catalog/catapulta/cancel', 'token=' . $this->session->data['token'] . $url, 'SSL')
				);				

			$order_products = array();

			$products = $this->model_catalog_catapulta->getOrderProducts($result['order_id']);
				foreach ($products as $product) {

				$order_products[] = array(
                    'shop_name'        => $product['shop_name']
				);
			}

				$this->data['orders'][] = array(
					'order_id' => $result['order_id'],
					'customer_name' => $result['customer_name'],
					'contact' => $result['contact'],
					'products' => $order_products,
					'product_name' => $result['product_name'],
					'product_model' => $result['product_model'],
					'product_href' => $result['product_id'],
					'product_id' => $result['product_id'],
					'product_model_href' => $this->url->link('catalog/product/update', 'token=' . $this->session->data['token'] . '&product_id=' . $result['product_id'] . $url, 'SSL'),
					'total' => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
					'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
					'date_added_time' => date($this->language->get('date_format_short_time'), strtotime($result['date_added'])),
					'selected' => isset($this->request->post['selected']) && in_array($result['order_id'], $this->request->post['selected']),
					'action' => $action
				);
		}


 

View:

Скрытый текст



					<?php if ($orders) { ?>
						<?php foreach ($orders as $order) { ?>
						<tr>
							<td style="text-align: center;"><?php if ($order['selected']) { ?>
								<input type="checkbox" name="selected[]" value="<?php echo $order['order_id']; ?>" checked="checked" />
								<?php } else { ?>
								<input type="checkbox" name="selected[]" value="<?php echo $order['order_id']; ?>" />
								<?php } ?></td>
							<td class="right"><?php echo $order['order_id']; ?></td>
							<td class="right"><?php echo $order['customer_name']; ?></td>
							<td class="right"><?php echo $order['contact']; ?></td>
							
							<?php foreach ($order['products'] as $product) { ?>
							<td class="right"><?php echo $product['shop_name']; ?></td>	
							<?php } ?>
                          
							<td class="right"><a href="http://site.ru/index.php?route=product/product&path=154&product_id=<?php echo $order['product_href']; ?>"target="_blank"><?php echo $order['product_name']; ?></a></td>
							<td class="right"><a href="<?php echo $order['product_model_href']; ?>"><?php echo $order['product_model']; ?></td>
							<td class="right"><?php echo $order['total']; ?></td>
							<td class="left"><?php echo $order['date_added_time']; ?></td>
							<td class="right"><?php foreach ($order['action'] as $action) { ?>
								[ <a href="<?php echo $action['href']; ?>"><?php echo $action['text']; ?></a> ]
								<?php } ?></td>
						</tr>
						<?php } ?>
						<?php } else { ?>
						<tr>
							<td class="center" colspan="7"><?php echo $text_no_results; ?></td>
						</tr>
						<?php } ?>


 

Но product_name, product_model, product_href, product_id и product_model_href останутся также одни и те же на весь заказ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Evgenka    1

Огромное спасибо, то что нужно!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу