laravel资产功能的相对路径

时间:2016-03-23 07:57:45

标签: laravel laravel-5 blade

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

问题是我的应用可以在开发模式中拥有不同的域: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" />

有什么想法吗?

5 个答案:

答案 0 :(得分:3)

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

  1. 为相对网址生成创建own helpers

  2. 手动创建相对网址。

答案 1 :(得分:3)

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

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

我想不通的地方是可以从不同目录级别(例如http://www.domain1.com/http://www.domain2.com/subpath/)访问网站的情况。

答案 2 :(得分:0)

将此行添加到您的脑海:

<base href="/yourapp" /> 

这是快速解决方案!

答案 3 :(得分:0)

这对我有用;

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

答案 4 :(得分:0)

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