为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 php 文件中包含图像、css 和 javascript 等静态资源

如何在 php 文件中包含图像、css 和 javascript 等静态资源

PHP
偶然的你 2024-01-19 15:11:00
一个非常重要的细节是,我创建的 asset 函数返回静态 asset 的完整路径,而不是 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-property 中文件的正确完整 URL,但没有显示图像。它也不适用于 css 和 javascript资产目录是"__DIR__.'/../../../resources/assets/'.$url"; $url 是用户给出的参数。这是 html 页面上返回的文件路径:c:/xampp/htdocs/project/app/Utilities/View/../../../resources/assets/images/image1.jpg返回的内容是否有效用作我的index.php 文件中的图像源???
查看完整描述

2 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

目前您在 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'; ?>"/>

(这里使用短回声<?=代替<?php echo。)

这给了你一些灵活性。您稍后可以将其替换为以下内容:

<?php define('ASSET_ROOT', '//cdn.example.com/assets'); ?>

您当前的资产路径也与包含您的函数的脚本相关。如果你移动它,你就必须重写你的函数。该常量的开销较小。

拥有相对于固定根的资产,仅沿着树向下移动,要简单得多,也不需要考虑。


查看完整回答
反对 回复 2024-01-19
?
墨色风雨

TA贡献1853条经验 获得超6个赞

asset 函数的问题是DIR返回本地文件路径,我应该返回的是服务器 url。因此,我替换了这一行

"__DIR__.'/../../../resources/assets/'.$url";

http://server_host/resources/assets/".$url

就我而言是

http://localhost/project/resources/assets/".$url

并返回该行并且它有效。


查看完整回答
反对 回复 2024-01-19
  • 2 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信