Laravel 5.1-主页链接中的URL


Laravel 5.1 - URLs in masterpage links

我从Laravel 5.1开始,遇到了一个问题。

在我的路由中(正如Laravel文档建议的auth),我有路由auth/loginauth/register。当我在主页/中时,一切都很好,但当我在/auth/login中并单击注册链接时,url会复制像/auth/auth/register这样的auth参数。

路线

// 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');

主页导航菜单

 @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一样放在url的myprojectpublic文件夹中,点击就会消失。

总是用斜线开始链接,这样就永远不会给出基于当前路径的相对路径。这应该可以解决你的问题:

 @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),并且可以使用各种函数链接到您的路线。这里有一些不错的文档,我正在讨论的部分是"生成URL"。

这对Laravel没有问题,但对构建锚标记的方式没有问题。如果不在相对url前面添加/,浏览器会将相对url附加到当前url。

解决方案是添加一个/,这将告诉浏览器将相对url附加到根url。

所以,你应该使用

<li><a href="/auth/login">Login </a></li>
<li><a href="/auth/register">Register</a></li>