使用Laravel 4,您可以使用以下代码生成指向路径的URL
$url = route('route-name');
$url = app('url')->route('route-name');
$url = URL::to('route-name');
是否可以为指定路线生成安全网址(https)?
我知道你可以在设置路线时“强迫”一条路线是安全的
Route::get('route-name', array('https', function()
{
return 'Must be over HTTPS';
}));
然而,“强制”(似乎?)意味着使路线对基于http
的浏览不可见。路由方法/功能无法接收此信息,仍会生成http
个网址。
为了澄清,我已经设置了这样的路线
Route::get('/stack-overflow', array('as'=>'route-name', function(){
}));
这是一条路径为stack-overflow
且名称为route-name
的路线。我可以使用名称(http
)生成明文route-name
链接。我想使用路由名称生成安全的https
链接,而不是路径。我还希望生成的URL包含查询字符串参数
https://example.com/stack-overflow?foo=bar
答案 0 :(得分:0)
您正在寻找URL::secure。
URL::secure('absolute/path');
//generates https://domain.com/absolute/path
使用命名路线:
URL::secure(URL::route('route-name'));
答案 1 :(得分:0)
从上面的Razor捕获评论,您可以使用以下代码生成我在Laravel 4.2.8中寻找的那种安全的查询字符串参数URL
//first parameter is the configured route name, second is the list of
//query string parameters, the third parameter (`$absolute`), ensures
//the protocol and server is stripped from the return value (giving us /path/to/route
//vs. http://example.com/path/to/route
$url_path = URL::route('route-name',['foo'=>'bar'],false);
//with the URL path generated, we can use the secure URL generation to
//turn that path into an https url
$secure_url = URL::secure($url_path);