我从Laravel 5.1开始,遇到了一个问题。
在我的路由中(正如Laravel文档建议的auth),我有路由auth/login
和auth/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的myproject
和public
文件夹中,点击就会消失。
总是用斜线开始链接,这样就永远不会给出基于当前路径的相对路径。这应该可以解决你的问题:
@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>