我最近一直在学习Laravel,我似乎错过了一个关键点:为什么要避免使用相对链接?
例如,我被建议使用URL::to()
输出作为参数传递的页面的完整路径 - 但是为什么这样做只需插入相对链接?例如,将URL::to('my/page')
放入<href>
只会将http://www.mywebsite.com/my/page
插入<href>
;但在我的网站上href='my/page'
的工作原理完全相同。在我的网站上,我基于公共目录中的index.php
文件中的所有相对URL。
显然,我错过了关于为什么使用完整路径的关键点。
答案 0 :(得分:4)
我发现在命名路由上使用route()
是一种更好的做法。例如,如果您决定某个管理员面板不应指向 example.com/admin ,而是 example.com/dashboard ,则必须筛选整个代码以查找对Url::to("/admin")
的所有引用。使用命名路由,您只需更改routes.php
示例:强>
Route::get('/dashboard', ['as' => 'admin', 'uses' => 'AdminController@index']);
现在,每当您需要提供管理页面的链接时,请执行以下操作:
<a href="{{ route('admin') }}">Admin</a>
在我看来,更好的做法。
甚至可以在后端使用,例如AdminController.php
// do stuff
return redirect()->route('admin');
答案 1 :(得分:3)
不应使用绝对或相对链接 - 建议使用这样的命名路由:
Route::get('my/page', ['as' => 'myPage', function () {
// return something
}]);
或
Route::get('my/page', 'FooController@showPage')->name('myPage');
然后,使用URL::route()
方法生成指向页面的链接(在L5中别名为route()
),可在Blade和后端代码中使用。
这样,您可以随时更改路径的路径,而无需担心在应用程序的任何位置断开链接。