@Arsen123

Почему дублируется цикл?

Добрый день! Достал из архива старый проект, писал его не я. Локально я запустил его, при выборе категории постов, они дублируются. Подскажите как исправить данную проблему. Написан проект на lumen, в интернете не достаточно информации которая могла бы мне помочь с моими слабыми познаниями.

Есть форма в которой выбираю категории постов
<form class="leftPanelMenu" data-form="listProjects" data-action="{{route('front_postGetProjects')}}"
                  autosend>
                @foreach ([
               'all' => 'все',
               1 => 'интерьеры квартир',
               4 => 'интерьеры загородных домов',
               2 => 'коммерческие интерьеры',
               3 => 'архитектурные проекты',
                ] as $val => $name)
                    <label class="lpm-custField">
                        <input type="radio" name="type" value="{{$val}}" {{$val == 'all' ? 'checked' : ''}}>
                        <span><span class="hidden">{{$name}}</span><a>{{$name}}</a></span>
                    </label>
                @endforeach
            </form>


в контроллере
public function postGetProjects(Request $request) {

      $type = $request->input('type');
      $projects = AdmService::getProjects(['type' => $type]);
      $grid = self::grid($projects, true);
      $prGrid = $grid[0];
      $f = $grid[1];

      $list = self::grid($projects, true, true);
      $prList = $list[0];
      $fM = $list[1];

      return $this->rqSuccess($this->render('front.block.listCardsGrid', [
        'prGrid' => $prGrid,
        'full' => $f,
        'prList' => $prList,
        'fullMob' => $fM
      ]));
    }


в классе AdmService
public static function getProjects($filter = []) {
    $projects = \DB::table('project')->select(\DB::raw('project.*'))->where('project.active', '=', 1)->orderBy('order');


    foreach ($filter as $n=>$f) {
      switch ($n) {
        case 'id':
          $projects = $projects->where('project.id', '=', $f);
        break;
        case 'url':
          $projects = $projects->where('project.url', '=', $f);
        break;
        case 'other':
          $projects = $projects->where('project.id', '!=', $f)->whereIn('project.type', [1,2]);
        break;
        case 'type':
          if ($f != 'all')
            $projects = $projects->where('project.type', '=', $f);
        break;
      }
    }

    $projects = $projects->get()->toArray();

    foreach ($projects as $k=>$p) {
      $p->text = json_decode($p->text, true);
      $p->props = json_decode($p->props);
      $p->authors = json_decode($p->authors, true);

      $size = getimagesize(base_path().'/public/img/content/'.$p->preview);
      $p->orient = $size[0] >= $size[1] ? 'h' : 'v';

      foreach ($p->text as $kb=>$b) {
        if (isset($b['imgs']) && (!isset($b['difference']) || !$b['difference'])) {
          $imgs = [];
          $b['imgs'] = is_array($b['imgs']) ? $b['imgs'] : [$b['imgs']];
          foreach ($b['imgs'] as $img) {
            try {
              $size = getimagesize(base_path().'/public/img/content/'.$img);
              $imgs[$img] = [$size[0], $size[1]];
            }
            catch (\Exception $e) {
              $check = false;
            }
          }
          $imgs = self::lineImgs($imgs);
          $p->text[$kb]['imgs'] = $imgs;
        }
      }

      $projects[$k] = $p;
    }

    if (isset($filter['id']) || isset($filter['url'])) {
      if (count($projects))
        return $projects[0];
      else
        return null;
    }

    return $projects;
  }


код в front.block.listCardsGrid'

<div class="listCards listCardsGrid">
  @foreach (['l', 'r'] as $side)
    <div class="{{$side}}">
      @foreach ($prGrid[$side] as $p)
        @if ($p != 'fb')
          <a href="{{route('front_project', ['name' => $p->url])}}" class="card {{$p->orient == 'v' ? 'card-big' : ''}}"
             data-type="{{$p->type}}">
            <img data-src="/img/content/{{$p->preview}}" alt="{{$p->name}}" title="{{$p->name}}"/>
            <div class="info">
              <div class="name"><h2>{{$p->name}}</h2></div>
              <div class="accent">{{isset($p->props->typeHome) ? $p->props->typeHome : ''}}<br>{{$p->props->area}}м<sup>2</sup>
              </div>
              <div class="status">{{$projectStatus[$p->status]}}</div>
            </div>
          </a>
        @else
          <a href="{{$urlFeedback}}" class="card card-link">
            <h2 class="h1">Тут может появиться ваш проект!<br>Давайте пообщаемся!</h2>
          </a>
        @endif
      @endforeach
    </div>
  @endforeach
  @if ($full)
    <a href="#" class="card card-link card-full" data-modal-open="modal-feedback">
      <h2 class="h1">Тут может появиться ваш проект!<br>Давайте пообщаемся!</h2>
    </a>
  @endif
</div>


первая категория показывается отлично, но если покликать по категориям, то блок с классом listCardsGrid добавляеться к разметке, хотя должен быть только один.
63971c8a8af4d251292459.jpeg

Я впервые вижу что бы классом передавались данные. Я надеюсь правильно и понятно обьяснил, если что то непонятно подправлю. Буду благодарен за помощь
  • Вопрос задан
  • 118 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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