Добрый день! Достал из архива старый проект, писал его не я. Локально я запустил его, при выборе категории постов, они дублируются. Подскажите как исправить данную проблему. Написан проект на 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 добавляеться к разметке, хотя должен быть только один.
Я впервые вижу что бы классом передавались данные. Я надеюсь правильно и понятно обьяснил, если что то непонятно подправлю. Буду благодарен за помощь