我正在使用laravel 5.1框架,我想在刀片模板中使用asset()函数。
问题是我的应用可以在开发模式中拥有不同的域:http://www.domain1.com和http://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" />
有什么想法吗?
答案 0 :(得分:3)
据我所知,asset()
和其他助手只生成完整路径。你有两个选择:
为相对网址生成创建own helpers。
手动创建相对网址。
答案 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">
。