【问题标题】:Laravel external URL issueLaravel 外部 URL 问题
【发布时间】:2017-04-29 18:16:16
【问题描述】:

我想在我的一些锚标记中设置外部 URL,但是当 URL 没有 http/https 协议时会遇到问题。当 URL 没有这些协议时,URL 变成如下:

<a target="_blank" href="www.usatoday.com/"></a>

当我点击它或将鼠标悬停在它上面时,它会显示并将我重定向到: http://localhost/event/www.usatoday.com

我在 href 中尝试了以下两种方法,但没有奏效:

{{url($eventSponsorsRow->sponsorUrl)}}
{{ $eventSponsorsRow->sponsorUrl }}

而不是 href 中的 URL。 Laravel 5.3

【问题讨论】:

    标签: php laravel-5.3 laravel-blade


    【解决方案1】:

    您需要在 URL 前添加 http://

    如果您想使用 {{url($eventSponsorsRow->sponsorUrl)}},请确保当您插入数据库时​​,它会在 http:// 前面加上它

    &lt;a target="_blank" href="{{ url($eventSponsorsRow-&gt;sponsorUrl) }}"&gt;&lt;/a&gt;

    如果您不想这样做,则需要使用从数据库中获取的 url 创建一个变量,并在 http://

    $newvariable = "http://$eventSponsorsRow-&gt;sponsorUrl"; 并在正确的位置调用 $newvariable

    &lt;a target="_blank" href="{{ $newvariable }}"&gt;&lt;/a&gt;

    https://laracasts.com/discuss/channels/laravel/laravel-blade-external-url-link-reading-url-from-database

    【讨论】:

    • 您不需要http://https://。只需在 URL 前加上 // 前缀,这将使用与其所在页面相同的方案。
    【解决方案2】:

    这是 HTML 和浏览器的东西,而不是 Laravel/PHP 本身。

    您只需要提供 url 的协议部分以使其成为外部。

    您可以跳过http:,但它至少需要在网址前加上双斜杠,例如:

    <a target="_blank" href="//www.usatoday.com/"></a>
    

    请注意,如果您跳过 http(s): 部分,它将使用当前使用的协议。

    【讨论】:

    • 它像你一样伤心,但如果我写这些'//'硬编码,那么如果用户使用这些协议输入 URL,它将停止工作。有没有办法处理它或者我必须像在 PHP 中一样自己处理它?
    • 当然硬编码// 是个坏主意。当它来自用户时,您应该验证和过滤 url 值。此时,您应该根据您希望在数据库中存储 url 的方式添加/删除 http 部分。
    猜你喜欢
    • 2021-10-17
    • 1970-01-01
    • 2021-09-14
    • 2017-01-05
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多