在 Laravel 路由上设置协议

Posted

技术标签:

【中文标题】在 Laravel 路由上设置协议【英文标题】:Set the protocol on a Laravel route 【发布时间】:2016-10-09 22:43:59 【问题描述】:

我在网站上有一条通往 webcal 资源的路由,因此我们希望在 Blade 模板中使用 URL::route('calendar') 时使用 webcal:// 生成 URL。

我尝试添加一个协议选项,但是这被忽略了,所以我想一定有其他方法吗?

Route::get('/calendar.ics',
    [
        'as' => 'calendar',
        'uses' => 'EntityController@calendar',
        'protocol' => 'webcal'
    ]
);

欢迎提出建议!

【问题讨论】:

你确定protocol 是一个可以接受的数组键吗? @haakym 似乎没有任何影响 - 没有错误,但协议仍然是 http。我只是猜到了这个参数,因为它看起来很合乎逻辑,但找不到任何支持它的文档。 尝试为自己的方法扩展刀片:laravel.com/docs/master/blade#extending-blade。看看当前的route() helper 是如何工作的:github.com/laravel/framework/blob/5.2/src/Illuminate/Foundation/… 然后你可以创建一个webCalRoute() 方法吗? 【参考方案1】:

webcal URI 不是官方协议。 webcal:// 实际上将作为http:// 交给另一个应用程序。

按照建议,您可以为此做自己的助手,也可以在视图中编写普通的实际 URI。

您也可以使用Content-Type: text/calendar 标头,但我想它不会在另一个应用程序中打开。

【讨论】:

以上是关于在 Laravel 路由上设置协议的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 在区域设置更改时重定向到路由

laravel 路由参数的默认值怎么设置

Laravel 在资源路由控制器的特定路由上应用中间件

Laravel - 所有路由上的 NGINX + Apache 反向代理 404

在 Laravel 中使用 auth 保护所有管理员/路由

Laravel 路由到控制器动作