Сегодня я столкнулся с очень странной проблемой.У меня есть контроллер, откуда я посылаю три переменные для представления sections
thread
и threads
.На мой взгляд, я перебираю все разделы с циклом foreach, как это:
@foreach($sections as $i => $section)
, и для каждого раздела я создаю div и присваиваю этот идентификатор следующим образом:
id="{{ $thread->slug }}-{{ $section->slug }}
теперь в этом div я перебираю все потоки, как это:
@foreach($threads as $thread)
и создаю div для каждого потока.Теперь проблема в том, что когда цикл для потоков завершает последний элемент в потоках, который хранится в локальной переменной thread, перезаписывает переменную потока, отправленную из представления.Теперь я знаю, что для решения этой проблемы я могу переименовать локальную переменную в цикле foreach во что-то другое, но мой вопрос: почему это происходит?почему эта локальная переменная перезаписывает мою глобальную переменную?
Вот мой контроллер:
public function show($slug)
{
return view('thread.show')
->with('sections', Section::all())
->with('threads', Thread::all())
->with('thread', Thread::where('slug', $slug)->first());
}
View:
@foreach($sections as $i => $section)
<div class="tab-pane fade" id="{{ $thread->slug }}-{{ $section->slug }}">
@foreach($threads as $thread)
<div class="card mb-3">
{{--/// Some Html--}}
</div
@endforeach
</div>
@endforeach
Теперь вот скриншот отрендеренного html:
Имя потока - page-172. Идентификатор для первого div отображается хорошо, но посмотрите на его id двух других div section-341
который является последним элементом в threads