Я начинаю с 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 исчезнут при нажатии.
Всегда начинайте ссылки с косой чертой, чтобы вам никогда не предоставляли относительный путь, основанный на текущем. Это должно решить ваши проблемы:
@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
сейчас) и может использовать различные функции для ссылки на ваши маршруты. Там какая - то достойная документация здесь и часть я говорю о "Создание ссылки".
Это не проблема с Laravel, но с тем, как вы строите свои якорные метки. Если вы не добавите /
перед относительным URL-адресом, браузер добавит относительный URL-адрес к текущему URL-адресу.
Решение состоит в том, чтобы добавить /
this, чтобы браузер указывал относительный URL-адрес на корневой URL-адрес.
Итак, вы должны использовать
<li><a href="/auth/login">Login </a></li>
<li><a href="/auth/register">Register</a></li>
$url = route('routeName', $params);
в шаблонах лезвий?