3 回答
TA贡献1796条经验 获得超4个赞
使用
<a class="nav-link" href="/admin/dashboard">
只能解决您的路由问题,但不能解决它。
如果你按照上面的链接,它可以让你获得正确的视图,而 Laravel 不会抛出任何错误,那么你离解决路线问题又近了一步。这意味着存在具有该前端名称的路由。但是,根据我下面的解释,您会发现服务器端名称是admin.dashboardadmin.dashboard。
所以,让我们开始解决问题。
该as键不替代路线的名字,它结合了他们。因此,只使用其中一种方法 -内部路由定义中的as键或->name()方法。
我正在 Laravel 5.8 上用我自己的机器对此进行测试,并且可以确认您可以在代码中同时使用两者。但是,您的代码中路由的名称是 - admin.dashboardadmin.dashboard - 令人惊讶。
以下任一路由定义都可以解决问题:
//beneath is the route that can work both for auth and non auth for admin/
Route::group(['prefix' => 'admin', 'as' => 'admin.'], function () {
Route::group(['middleware' => 'auth'], function () {
Route::get('dashboard', ['as' => 'dashboard', 'uses' => 'Admin\DashboardController@index']);
Route::resource('slider', 'Admin\SliderController');
});
});
或者
//beneath is the route that can work both for auth and non auth for admin/
Route::group(['prefix' => 'admin', 'as' => 'admin.'], function () {
Route::group(['middleware' => 'auth'], function () {
Route::get('dashboard', ['uses' => 'Admin\DashboardController@index'])->name('dashboard');
Route::resource('slider', 'Admin\SliderController');
});
});
无论哪种方式,生成的前端链接都应该是
admin/dashboard
而访问链接的服务器端路由是
route('admin.dashboard')
html 应该是:
<li class="{{ Request::is('admin/dashboard*')? 'active':''}} ">
<a class="nav-link" href="{{route('admin.dashboard')}}">
<i class="material-icons">dashboard</i>
<p>Dashboard</p>
</a>
</li>
注意:不要通过将生成的路由链接直接放入浏览器地址栏来测试它们。将它们放在一个链接中href,浏览器将绝对或相对地解析它们 - 取决于链接类型。
TA贡献1796条经验 获得超10个赞
你必须在 Laravel 中的内部链接的“href”中的路由之前添加一个“/”。基本上你不需要在“href”中调用“route”方法,因为 Laravel 会自动确定它是哪条路由。尝试这个:
<a class="nav-link" href="/admin/dashboard">
TA贡献1887条经验 获得超5个赞
路由助手接受路由的名称,试试这个:
href="{{ route('admin.dashboard') }}
https://laravel.com/docs/5.8/helpers#method-route
- 3 回答
- 0 关注
- 146 浏览
添加回答
举报