![](/img/trans.png)
[英]How to include this basic html (CSS, JavaScript) template into a php file?
[英]How to include static assets like images, css and javascript in a php file
一个非常重要的细节是,我创建的资产函数返回的是静态资产的完整路径,而不是从 php 文件位置的相对路径
我做了什么:
public static function asset($url){
$file_path = __DIR__.'/../../../resources/assets/'.$url;
$file_path = str_replace("\\","/",$file_path);
return $file_path;
}
在我的 index.php 中,它包含 html 文件:
<img width="500px" alt="<?php echo asset('images/image1.jpg');?>" src="<?php asset('images/image1.jpg');?>"/>
它为我提供了 alt 属性中文件的正确完整 url,但没有显示图像。
它也不适用于 css 和 javascript
资产目录是
"__DIR__.'/../../../resources/assets/'.$url";
$url 是用户给出的参数。
这是html页面上返回的文件路径:
c:/xampp/htdocs/project/app/Utilities/View/../../../resources/assets/images/image1.jpg
返回的内容是否有效用作我的 index.php 文件中的图像 src?
目前您在 src 中没有输出。 您需要回显或打印文件路径:
它应该是(注意回声):
<img src="<?php echo asset('images/image1.jpg');?>"/>
这也是一个完整的文件路径,可能与协议相关。 所以可能会被缝合到你的域上。 例如http://example.com/path/from/file/system/root/to/assets/images/image1.jpg
。 如果您包含file://
协议,则在您自己的站点上在某些浏览器上进行本地开发时它可能会起作用,但可能由于来源策略而不起作用。 它肯定不会在公共网络服务器上工作。
例如/var/www/example.com/assets/image.png
是一个文件路径,如果文档根目录是/var/www/example.com
我们可以只使用/assets/image.png
作为网络路径。
我建议让你的所有资产都与你的文档或项目根相关。
您可以在项目引导程序中使用一个简单的常量而不是这样的:
<?php define('ASSET_ROOT', '/assets'); ?>
那么你的 src 就变成了:
<img src="<?= ASSET_ROOT . '/images/image1.jpg'; ?>"/>
(这里使用短 echo <?=
而不是<?php echo
。)
这给了你一些灵活性。 您可以稍后将其换成以下内容:
<?php define('ASSET_ROOT', '//cdn.example.com/assets'); ?>
您当前的资产路径也与包含您的函数的脚本相关。 如果你移动它,你必须重写你的函数。 常量的开销较小。
拥有相对于固定根的资产,只沿着树向下移动,远没有那么复杂,也不需要考虑。
资产功能的问题是DIR返回本地文件路径,我应该返回的是服务器 url。 因此,我替换了这一行
"__DIR__.'/../../../resources/assets/'.$url";
和
http://server_host/resources/assets/".$url
在我的情况下是
http://localhost/project/resources/assets/".$url
并返回该行并且它起作用了。
@Progroc,感谢您的贡献
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.