Использование l oop -> первая переменная и оператор if, но все равно выводит оба результата - PullRequest
0 голосов
/ 05 апреля 2020

Я пытался отфильтровать свою навигационную панель, чтобы показывать только определенные навигационные данные на основе заданного мной условия.

Но каким-то образом он по-прежнему выводит навигационную информацию, которую я не хочу.

@foreach($profile as $key => $data)

          @if(Auth::user()->id == $data->alumni_id)
              <a class="dropdown-item" href="{{ url('alumni/updateProfile') }}">
              Update Profile
              </a>

          @else

            @if ($loop->first)
              <a class="dropdown-item" href="{{ url('alumni/createNewProfile') }}">
              Update Profile 1
              </a>                             
             @endif

           @endif
@endforeach

Но как-то в другой учетной записи, которую я сделал, она правильно фильтрует панель навигации.

Так что я немного запутался в происходящем.

Рабочая

Неудачный

Рад, что кто-нибудь из вас, ребята, что-нибудь видел, спасибо!

1 Ответ

0 голосов
/ 05 апреля 2020

Похоже на проблему логики c, основанную на порядке l oop профилей.

Вы, по сути, говорите, что если самый первый профиль в l oop не является выпускником, затем отобразите пункт меню Update Profile 1. То есть Update Profile 1 ВСЕГДА будет отображаться, если только идентификатор выпускника не является самым первым идентификатором в l oop.

Чтобы исправить, есть одна возможность изменить вашу логику c вокруг, чтобы взять это учитывается:

Редактировать на основе комментария : если вы просто хотите отобразить другое меню, если Auth::User соответствует alumni_id, снимите проверку $loop и найдите матч за пределами аль oop. (Я напишу это долгими путями для понимания - вы можете объединить для эффективности). Предложите назвать $profiles во множественном числе - это заставило меня задуматься над этим.

    $alumni_ids = $profile->pluck('alumni_id')->toArray();

    @if(in_array(Auth::user()->id, $alumni_ids))
          <a class="dropdown-item" href="{{ url('alumni/updateProfile') }}">
          Update Profile
          </a>

    @else
          <a class="dropdown-item" href="{{ url('alumni/createNewProfile') }}">
          Create New Profile
          </a>                             

    @endif

Я не уверен, каково ваше точное намерение с точки зрения того, когда показывать что, но приведенное выше должно показать, почему это не работает, и дайте представление о том, как изменить его, чтобы он работал ближе к тому, что вы хотите.

Вы также можете рассмотреть возможность замены чека для alumni_id на одиночный in_array() или в collection чеке. за пределами l oop, чтобы узнать, за кем вы охотитесь - сравнивая l oop И идентификатор - это то, что доставляет вам неприятности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...