Laravel - 为什么不是相对URL?

时间:2015-11-25 15:36:05

标签: php laravel laravel-4

我最近一直在学习Laravel,我似乎错过了一个关键点:为什么要避免使用相对链接?

例如,我被建议使用URL::to()输出作为参数传递的页面的完整路径 - 但是为什么这样做只需插入相对链接?例如,将URL::to('my/page')放入<href>只会将http://www.mywebsite.com/my/page插入<href>;但在我的网站上href='my/page'的工作原理完全相同。在我的网站上,我基于公共目录中的index.php文件中的所有相对URL。

显然,我错过了关于为什么使用完整路径的关键点。

2 个答案:

答案 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');

http://laravel.com/docs/5.1/routing#named-routes

答案 1 :(得分:3)

不应使用绝对或相对链接 - 建议使用这样的命名路由:

Route::get('my/page', ['as' => 'myPage', function () {
    // return something
}]);

Route::get('my/page', 'FooController@showPage')->name('myPage');

然后,使用URL::route()方法生成指向页面的链接(在L5中别名为route()),可在Blade和后端代码中使用。

这样,您可以随时更改路径的路径,而无需担心在应用程序的任何位置断开链接。