【问题标题】:Relative path for asset function for laravellaravel 资产功能的相对路径
【发布时间】:2016-07-10 09:55:05
【问题描述】:

我正在使用 laravel 5.1 框架,我想在刀片模板中使用 assets() 函数。

问题是我的应用程序可以有不同的域:http://www.domain1.comhttp://www.domain2.com 在开发模式下。

当我使用正确的asset() 语法时,它会添加文件的完整路径,包括域。

   <link href="{{ asset("/css/style.css") }}" type="text/css" />

转换为

  <link href="http://www.domain1.com/css/style.css" type="text/css" />

问题是: 是否可以配置laravel,所以它不会添加完整的域名。 预期结果是:

<link href="/css/style.css" type="text/css" />

有什么想法吗?

【问题讨论】:

  • 我以为asset方法会根据当前域生成一个url?
  • 链接里为什么不直接写/css/style.css?
  • 我还没有测试过,但是...这不意味着当你有一个像 domain1.com/users/123/ 这样的 url 时,它不会找到资源,因为它会寻找路径 users/123/css/style.css 中的 css ?

标签: laravel laravel-5 blade


【解决方案1】:

据我所知,asset() 和其他助手只生成完整路径。你有两个选择:

  1. 创建您的 own helpers 以生成相对 URL。

  2. 手动创建相对 URL。

【讨论】:

    【解决方案2】:

    我找到了一种解决方法,希望没有任何禁忌症。
    您可以在 .env 文件中设置 ASSET_URL=" "

    ASSET_URL 包含将用于您的 asset() 助手的前缀,当它的值为空时(默认为空),它将使用您的 APP_URL 代替。
    使用 " " 作为前缀将确保您的所有资产路径都将从您正在使用的任何域的根目录开始(例如 &lt;link href=" /css/app.css" rel="stylesheet"&gt;,请注意 URL 前的空格)。
    使用此解决方案,您将来只需更改 ASSET_URL 设置即可轻松切换到 CDN。
    坏事是它为所有资产 url 添加了一个空格前缀,浏览器会忽略它,但在使用 javascript 时可能会遇到其他问题。

    当您可以从不同的目录级别(例如http://www.domain1.com/http://www.domain2.com/subpath/)访问该站点时,我可以想到这不起作用的情况。

    【讨论】:

      【解决方案3】:

      这对我有用;

      parse_url(asset('path/to/asset'), PHP_URL_PATH)
      

      【讨论】:

        【解决方案4】:

        在你的脑海中添加这一行:

        <base href="/yourapp" /> 
        

        这是一个快速的解决方案!

        【讨论】:

          【解决方案5】:

          我通过在.env 文件中设置ASSET_URL='/.' 来修复空格字符。 这使得资产 url 像 &lt;link rel="stylesheet" href="/./css/app.css"&gt;.

          【讨论】:

            猜你喜欢
            • 2021-06-26
            • 2017-01-04
            • 2022-07-16
            • 1970-01-01
            • 2022-06-10
            • 2010-12-08
            • 2011-12-15
            • 2020-04-26
            • 1970-01-01
            相关资源
            最近更新 更多