Laravel — как удалить элемент из представления для конкретной страницы

#laravel

#laravel

Вопрос:

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

Вот как я его настроил:

       @if(!url('/register'))
        <li>
          <a class="btn btn-link" href="{{ url('/register') }}">Register</a>
        </li>
      @endif
  

Комментарии:

1. можете ли вы добавить версию laravel?

Ответ №1:

Используется request()->is() для определения соответствия текущего URL-адреса строке:

 @if (request()->is('register*'))
  

Комментарии:

1. в этом случае все маршруты, которые содержат регистр, не будут показывать кнопку. Будьте осторожны с этим )

2. @dyachenko, я добавил asterix, чтобы показать, как это работает. ) В любом случае я бы рекомендовал перейти по ссылке выше и прочитать о is() методе.

Ответ №2:

Вы можете использовать Route::getCurrentRoute()->getPath() метод для получения текущего URL, как показано ниже:

 @if(Route::getCurrentRoute()->getPath() != 'register')

 <li>
     <a class="btn btn-link" href="{{ url('/register') }}">Register</a>
 </li>

@endif
  

Надеюсь, этот ответ вам поможет!

Ответ №3:

Самый простой способ (без запоминания множества API) сделать это — добавить переменную в свой метод:

 public function register() // if this is your page in the controller
{
  return view('register')->with('no_register_link', true);
}
  

Так что вы можете проверить это в шаблоне:

 @if (!$no_register_link)
<li>...template...</li>
@endif
  

Таким образом, вы можете разделить логику отображения и сам URL. (На случай, если вы хотите проигнорировать его и на другой странице.)