Laravel 5.1 - URL в ссылках главной страницы

1

Я начинаю с Laravel 5.1, и у меня есть проблема с проблемой.

На моих маршрутах (как предлагает Laravel docs для auth) у меня есть маршруты auth/login и auth/register. Когда я нахожусь на домашней странице / все в порядке, но когда я нахожусь в /auth/login и нажимаю ссылку регистрации, url дублирует параметр auth, например this /auth/auth/register.

Маршруты

// Authentication routes...
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');

// Registration routes...
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');

Главное меню Nav Nav

 @if (!Auth::check())
             <li><a href="auth/login">Login </a></li>
             <li><a href="auth/register">Register</a></li>
               @else (Auth::check())
                   <li class="dropdown">
                      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ Auth::user()->name }} <span class="caret"></span></a>
                      <ul class="dropdown-menu" role="menu">
                        <li><a href="">Dashboard</a></li>
                        <li><a href="auth/logout">Logout</a></li>
                      </ul>
                   </li>
                   </ul>
             @endif

Что я могу сделать, чтобы избежать дублирования URL-адреса?

ПРИМЕЧАНИЕ. Я запускаю локальную машину с XAMPP, мой полный URL-адрес - http://localhost/myproject/public/ (я все еще изучаю, как сделать открытую папку dissapear). Если я положу маршрут, как /auth/login myproject и public папки url исчезнут при нажатии.

Теги:
authentication
laravel-5.1

2 ответа

2
Лучший ответ

Всегда начинайте ссылки с косой чертой, чтобы вам никогда не предоставляли относительный путь, основанный на текущем. Это должно решить ваши проблемы:

 @if (!Auth::check())
   <li><a href="/auth/login">Login </a></li>
   <li><a href="/auth/register">Register</a></li>
 @else (Auth::check())
   <li class="dropdown">
      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ Auth::user()->name }} <span class="caret"></span></a>
      <ul class="dropdown-menu" role="menu">
        <li><a href="">Dashboard</a></li>
        <li><a href="/auth/logout">Logout</a></li>
      </ul>
   </li>
   </ul>
@endif

Вы также можете проверить привязку к фактическим маршрутам вместо жесткого кодирования URL-адресов. Поскольку Laravel5 больше не поставляется с HTML- illuminate/html пакетом, вам придется включить его самостоятельно (это на самом деле laravelcollective/html сейчас) и может использовать различные функции для ссылки на ваши маршруты. Там какая - то достойная документация здесь и часть я говорю о "Создание ссылки".

  • 0
    Это приносит немного света об URL. Могу ли я поставить $url = route('routeName', $params); в шаблонах лезвий?
  • 0
    Извините, я связался с Laravel 4. Если вы используете HTML-пакет Laravel , вы можете просто использовать методы в blade-сервере, как упомянуто здесь .
Показать ещё 1 комментарий
1

Это не проблема с Laravel, но с тем, как вы строите свои якорные метки. Если вы не добавите / перед относительным URL-адресом, браузер добавит относительный URL-адрес к текущему URL-адресу.

Решение состоит в том, чтобы добавить / this, чтобы браузер указывал относительный URL-адрес на корневой URL-адрес.

Итак, вы должны использовать

<li><a href="/auth/login">Login </a></li>
<li><a href="/auth/register">Register</a></li>
  • 0
    Я не сказал, что это проблема Ларавела, я знаю, что это моя вина. Я отредактировал, чтобы показать вам, почему я поместил URL таким образом (я работаю на локальном компьютере с подпапками, и эти ссылки переопределяют мою подпапку),

Ещё вопросы

Сообщество Overcoder
Наверх
Меню