@arsenaljek

Вывод Родитель-Категория-Подкатегория-Товар?

Подскажите пожалуйста. Ломаю голову уже не первый день.
Есть массив (Родитель-Категория-Подкатегория)
Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Родитель 1
            [layer] => 1
            [parent_id] => 0
            [link] => 
        )

    [1] => Array
        (
            [id] => 10
            [name] => Категория 1
            [layer] => 2
            [parent_id] => 1
            [link] => урл_категории
        )

    [2] => Array
        (
            [id] => 178
            [name] => Подкатегория 1
            [layer] => 3
            [parent_id] => 10
            [link] => урл_подкатегории
        )

    [3] => Array
        (
            [id] => 56
            [name] => Подкатегория 2
            [layer] => 3
            [parent_id] => 10
            [link] => урл_подкатегории
        )

    [4] => Array
        (
            [id] => 57
            [name] => Подкатегория 3
            [layer] => 3
            [parent_id] => 10
            [link] => урл_подкатегории
        )

    [5] => Array
        (
            [id] => 192
            [name] => Категория 2
            [layer] => 2
            [parent_id] => 1
            [link] => урл_категории
        )

    [6] => Array
        (
            [id] => 194
            [name] => Подкатегория 3
            [layer] => 3
            [parent_id] => 192
            [link] => урл_подкатегории
        )

    [21] => Array
        (
            [id] => 2
            [name] => Родитель 2
            [layer] => 1
            [parent_id] => 0
            [link] => 
        )

    [22] => Array
        (
            [id] => 13
            [name] => Категория 1
            [layer] => 2
            [parent_id] => 2
            [link] => урл_категории
        )

    [23] => Array
        (
            [id] => 67
            [name] => Подкатегория 1
            [layer] => 3
            [parent_id] => 13
            [link] => урл_подкатегории
        )

    [24] => Array
        (
            [id] => 185
            [name] => Подкатегория 2
            [layer] => 3
            [parent_id] => 13
            [link] => урл_подкатегории
        )
)

Я пытаюсь вывести в аккордеоне бутстрапа всю эту систему.
Вот код вывода (В этом коде еще присутствует уровень с товаром). Там просто шаблонный 1 товар для теста.
<div class="row">
						<div class="col-12">
							<div class="accordion" id="accordionExample">
								<?php
								$i = 1;
								foreach($left_menu as $menu_item) { 
									if($menu_item['layer']==3) { ?>
										<div class="card-body p-0 pt-1">
											<h3 class="mb-0 text-center alert-primary" style="color:white"><?=$menu_item['name']?></h3>
											<div class="table-responsive">
												<table class="table table-sm mb-0">
													<thead>
														<tr>
															<th scope="col"></th>
															<th scope="col">Наименование</th>
															<th scope="col">Описание</th>
															<th scope="col">Цена завода (опт)</th>
															<th scope="col">Цена базовая</th>
															<th scope="col"></th>
														</tr>
													</thead>
													<tbody>
														<tr>
															<td><div class="badge badge-danger my-2">Хит продаж</div></td>
															<td><a href="#">Товар 1</a></td>
															<td class="w-75">Описание</td>
															<td>8 190 <i class="fas fa-ruble-sign"></i></td>
															<td>9 635 <i class="fas fa-ruble-sign"></i></td>
															<td class="table-action"><a href="#"><i class="align-middle" data-feather="shopping-cart" style="color:red"></i></a></td>
														</tr>
													</tbody>
												</table>
											</div>
										</div>
									<?php	
									}	
									if($menu_item['layer']==2) {
										if($l2_id>0) { //закрываем 2-й уровень ?>
											</div>
										<?php
										}	
										$l2_id = $menu_item['id'];
 ?>

										<div class="card-header alert-primary" id="headingOne">
											<h5 class="card-title my-2">
												<a href="#" data-toggle="collapse" data-target="#collapse-<?=$i?>" aria-expanded="true" aria-controls="collapseOne" style="color:white"><?=$menu_item['name']?></a>
											</h5>
										</div>
										<div id="collapse-<?=$i?>" class="collapse" aria-labelledby="headingOne" data-parent="#accordionExample">
									<?php
									}	
									?>
									<?php
									if($menu_item['layer']==1) {
										if($l2_id>0) { //закрываем 2-й уровень ?>

										<?php
										}		
										if($l1_id>0) { //закрываем 1-й уровень ?>

										<?php
										}
										$l1_id = $menu_item['id'];
										$l2_id=-1;	
										?>	
										<div class="card">
											<div class="card-header">
												<h5 class="card-title mb-0"><?=$menu_item['name']?></h5>
											</div>
									<?php
									}
									$i++;
								}
								?>
							</div>
						</div>
					</div>

Проблема в том, что я не могу верно закрыть нужные теги. Не понимаю.
Рабочий HTML шаблон имеет такой код
<div class="card">
									<div class="card-header">
										<h5 class="card-title mb-0">Родитель</h5>
									</div>
									<div class="card-header alert-primary" id="headingOne">
										<h5 class="card-title my-2">
											<a href="#" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne" style="color:white">Категория 1</a>
										</h5>
									</div>
									<div id="collapseOne" class="collapse" aria-labelledby="headingOne" data-parent="#accordionExample">
										<div class="card-body p-0 pt-1">
											<h3 class="mb-0 text-center alert-primary" style="color:white">Подкатегория 1</h3>
											<div class="table-responsive">
												<table class="table table-sm mb-0">
													<thead>
														<tr>
															<th scope="col"></th>
															<th scope="col">Наименование</th>
															<th scope="col">Описание</th>
															<th scope="col">Цена завода (опт)</th>
															<th scope="col">Цена базовая</th>
															<th scope="col"></th>
														</tr>
													</thead>
													<tbody>
														<tr>
															<td><div class="badge badge-danger my-2">Хит продаж</div></td>
															<td><a href="#">Товар 1</a></td>
															<td class="w-75">Описание</td>
															<td>8 190 <i class="fas fa-ruble-sign"></i></td>
															<td>9 635 <i class="fas fa-ruble-sign"></i></td>
															<td class="table-action"><a href="#"><i class="align-middle" data-feather="shopping-cart" style="color:red"></i></a></td>
														</tr>
													</tbody>
												</table>
											</div>
											<div class="card-body p-0 pt-1">
												<h3 class="mb-0 text-center alert-primary" style="color:white">Подкатегория 2</h3>
												<div class="table-responsive">
													<table class="table table-sm mb-0">
														<thead>
															<tr>
																<th scope="col"></th>
																<th scope="col">Наименование</th>
																<th scope="col">Описание</th>
																<th scope="col">Цена завода (опт)</th>
																<th scope="col">Цена базовая</th>
																<th scope="col"></th>
															</tr>
														</thead>
														<tbody>
															<tr>
																<td><div class="badge badge-danger my-2">Хит продаж</div></td>
																<td><a href="#">Товар 2</a></td>
																<td class="w-75">Описание</td>
																<td>8 190 <i class="fas fa-ruble-sign"></i></td>
																<td>9 635 <i class="fas fa-ruble-sign"></i></td>
																<td class="table-action"><a href="#"><i class="align-middle" data-feather="shopping-cart" style="color:red"></i></a></td>
															</tr>
														</tbody>
													</table>
												</div>
											</div>
										</div>
									</div>
								</div>

Я пробую поставить закрывающий </div>
сюда (т.к по мои представлениям он должен закрыть тег<card>, но он закрывает <div> который основной аккордеон)
if($l1_id>0) { //закрываем 1-й уровень ?>
</div>
<?php
}
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
@Picknice
Веб-программист (FULL STACK)
5ecfdba7e78cf393079034.png
(1) это условие не выполняется, так как переменная заполняется после условия (2)
Возможно стоит вынести такие переменные в глобальную область (до конструкции foreach), чтоб они не обнулялись в каждой итерации.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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